public interface Configurable<C extends Configurable>
Configurable
コンテキストのすべての変更は、getConfiguration()
メソッドを介して公開される関連する Configuration
状態に反映されます。 構成可能なコンテキストは、特定のコンポーネント(Feature
または DynamicFeature
メタプロバイダーに渡されるアプリケーションまたはリソースメソッドの構成可能なコンテキストなど)に間接的に関連付けることも、Configurable
インターフェースを実装する具象コンポーネント(Client
または WebTarget
など)によって直接表すこともできます)。そのため、構成コンテキストの正確な範囲は、通常、コンテキストにアクセスするユースケースシナリオによって決定されます。
property(java.lang.String, java.lang.Object)
メソッドを使用して新しいプロパティを設定できます。同様に、既存のプロパティの値を更新するには、同じ方法を使用できます。構成されたプロパティのセットに関する情報は、基礎となる Configuration
オブジェクトを介して入手できます。null
値をプロパティに割り当てることにより、既存のプロパティを削除できます。
登録されたカスタムコンポーネントクラスとインスタンスは、構成されたランタイムの機能を決定する主な要因であるため、コンテキスト構成情報の重要な部分です。実装は、特定の構成可能なコンテキストでサポートされているコンポーネントの要件に準拠していない登録について警告し、無視する必要があります。
ほとんどの場合、コンポーネントを登録するときは、使用可能な登録 API の最も単純な形式のメソッド(register(Class)
または register(Object)
)で十分です。
例:
config.register(HtmlDocumentReader.class); config.register(new HtmlDocumentWriter(writerConfig));
状況によっては、コンポーネントクラスまたはインスタンスが、実装によって認識される複数のプロバイダー契約を実装する場合があります(フィルター、インターセプター、エンティティプロバイダーなど)。デフォルトでは、実装は、コンポーネントクラスによって実装されたすべての認識されたプロバイダー契約のプロバイダーとして、新しいコンポーネントクラスまたはインスタンスを登録する必要があります。
例:
@Priority(ENTITY_CODER) public class GzipInterceptor implements ReaderInterceptor, WriterInterceptor { ... } ... // register GzipInterceptor as a ReaderInterceptor // as well as a WriterInterceptor config.register(GzipInterceptor.class);
ただし、認識されているすべてのプロバイダー契約へのコンポーネントのデフォルト登録が望ましくない場合があります。このような場合、ユーザーは他のバージョンの register(...)
メソッドを使用して、コンポーネントを登録する必要があるプロバイダー契約のコレクションや、登録されている各プロバイダー契約の優先度を明示的に指定できます。
例:
@Priority(USER) public class ClientLoggingFilter implements ClientRequestFilter, ClientResponseFilter { ... } @Priority(ENTITY_CODER) public class GzipInterceptor implements ReaderInterceptor, WriterInterceptor { ... } ... // register ClientLoggingFilter as a ClientResponseFilter only config.register(ClientLoggingFilter.class, ClientResponseFilter.class); // override the priority of registered GzipInterceptor // and both of it's provider contracts config.register(GzipInterceptor.class, 6500);
原則として、コンポーネントクラスごとに最大 1 つの登録を行うことができます。クラスベースまたはインスタンスベース - 任意の時点で構成されます。実装は、指定された構成可能なコンテキストで以前にすでに登録されているプロバイダークラスの新しい登録を構成する試みを拒否する必要があります。実装は、拒否されたコンポーネント登録についてユーザーに通知する警告も発生させる必要があります。
例:
config.register(GzipInterceptor.class, WriterInterceptor.class); config.register(GzipInterceptor.class); // Rejected by runtime. config.register(new GzipInterceptor()); // Rejected by runtime. config.register(GzipInterceptor.class, 6500); // Rejected by runtime. config.register(new ClientLoggingFilter()); config.register(ClientLoggingFilter.class); // rejected by runtime. config.register(ClientLoggingFilter.class, ClientResponseFilter.class); // Rejected by runtime.
修飾子と型 | メソッドと説明 |
---|---|
Configuration | getConfiguration() この構成可能インスタンスの内部構成状態のライブビューを取得します。 |
C | property(StringSE name, ObjectSE value) 新しい構成プロパティを設定します。すでに設定されている場合は、プロパティの既存の値が更新されます。 |
C | register(ClassSE<?> componentClass) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のクラスを登録します。 |
C | register(ClassSE<?> componentClass, ClassSE<?>... contracts) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のクラスを登録します。 |
C | register(ClassSE<?> componentClass, int priority) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のクラスを登録します。 |
C | register(ClassSE<?> componentClass, MapSE<ClassSE<?>,IntegerSE> contracts) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のクラスを登録します。 |
C | register(ObjectSE component) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のインスタンスを登録します。 |
C | register(ObjectSE component, ClassSE<?>... contracts) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のインスタンスを登録します。 |
C | register(ObjectSE component, int priority) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のインスタンスを登録します。 |
C | register(ObjectSE component, MapSE<ClassSE<?>,IntegerSE> contracts) インスタンス化され、この構成可能なコンテキストのスコープで使用されるカスタムコンポーネント(拡張プロバイダーや feature メタプロバイダーなど)のインスタンスを登録します。 |
Configuration getConfiguration()
Configurable
インスタンスのメソッドを使用して行われた変更は、返される Configuration
インスタンスに反映されます。 返される Configuration
インスタンスとそれが提供する収集データは、スレッドセーフではありません。親構成可能オブジェクトのメソッドを使用して行われた変更。
C property(StringSE name, ObjectSE value)
null
値をプロパティに設定すると、プロパティバッグからプロパティが効果的に削除されます。name
- プロパティ名。value
- (新規)プロパティ値。null
値は、指定された名前のプロパティを削除します。C register(ClassSE<?> componentClass)
feature
メタプロバイダーなど)のクラスを登録します。実装は、指定された構成可能なコンテキストでサポートされているコンポーネント型の要件に準拠していない登録について警告し、無視する必要があります。クラスまたはインスタンスベースの登録がシステムにすでに存在するコンポーネント型の後続の登録試行は、API 実装によって拒否される必要があり、拒否された登録についてユーザーに通知するために警告を表示する必要があります。登録されたコンポーネントクラスは、認識されているすべての API の契約プロバイダーとして登録されているか、Feature
や DynamicFeature
などのメタプロバイダー契約を含む実装固有の拡張契約です。register(Object)
メソッドを介して登録されたコンポーネントインスタンスとは対照的に、このクラスベースの register(...)
メソッドを使用して登録されたコンポーネントのライフサイクルは、実装または実装でサポートされている基盤となる IoC コンテナーによって完全に管理されます。
componentClass
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントクラス。C register(ClassSE<?> componentClass, int priority)
feature
メタプロバイダーなど)のクラスを登録します。 この登録方法は、javax.annotation.Priority
アノテーションを介して登録されたコンポーネントクラスで指定された優先度が、指定された priority
値で上書きされることを除いて、register(Class)
と同じ機能を提供します。
登録されたコンポーネントのクラスによって実装された特定のプロバイダー契約に優先度が適用されない場合、指定された priority
値はその契約では無視されることに注意してください。
componentClass
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントクラス。priority
- 登録されたコンポーネントと、コンポーネントが実装するすべてのプロバイダー契約の優先度。C register(ClassSE<?> componentClass, ClassSE<?>... contracts)
feature
メタプロバイダーなど)のクラスを登録します。 この登録方法は、コンポーネントクラスがリストされた拡張プロバイダーまたはメタプロバイダー contracts
のプロバイダーとしてのみ登録されることを除いて、register(Class)
と同じ機能を提供します。明示的に列挙されたすべての契約型は、登録されたコンポーネントによって実装または拡張されたクラスまたはインターフェースを表す必要があります。登録されたコンポーネントクラスが assignable from
SE でない契約は無視する必要があり、実装は無視された契約についてユーザーに通知する警告を生成する必要があります。
componentClass
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントクラス。contracts
- コンポーネントを登録する必要があるコンポーネントによって実装される特定の拡張プロバイダーまたはメタプロバイダー契約。実装は、このメソッドを介して契約の空または null
コレクションのコンポーネントクラスを登録する試みを無視する必要があり、そのようなイベントについて警告を発する必要があります。C register(ClassSE<?> componentClass, MapSE<ClassSE<?>,IntegerSE> contracts)
feature
メタプロバイダーなど)のクラスを登録します。 この登録方法は register(Class, Class[])
と同じ機能を提供しますが、javax.annotation.Priority
アノテーションを介して登録されたコンポーネントクラスで指定された優先度は、[ 契約型、優先度 ] の提供されたマップの値として指定された整数の優先度値で、拡張プロバイダー契約型ごとに個別にオーバーライドされます。ペア。
コンポーネントに登録されているプロバイダー契約に優先度が適用されない場合、指定された優先度の値はそのような契約では無視されることに注意してください。
componentClass
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントクラス。contracts
- コンポーネントが登録されている特定の拡張プロバイダーとメタプロバイダーの契約およびそれらに関連する優先順位のマップ。マップ内のすべての契約は、コンポーネントによって実装または拡張されたクラスまたはインターフェースを表す必要があります。登録されたコンポーネントクラスが assignable from
SE でない契約は無視する必要があり、実装は無視された契約についてユーザーに通知する警告を生成する必要があります。C register(ObjectSE component)
feature
メタプロバイダーなど)のインスタンスを登録します。実装は、指定された構成可能なコンテキストでサポートされているコンポーネント型の要件に準拠していない登録について警告し、無視する必要があります。クラスまたはインスタンスベースの登録がシステムにすでに存在するコンポーネント型の後続の登録試行は、API 実装によって拒否される必要があり、拒否された登録についてユーザーに通知するために警告を表示する必要があります。登録されたコンポーネントは、認識されているすべての API の契約プロバイダーとして登録されているか、Feature
や DynamicFeature
などのメタプロバイダー契約を含む実装固有の拡張契約です。register(Class)
メソッドを介して登録されたコンポーネントとは対照的に、このインスタンスベースの register(...)
を使用して登録されたプロバイダーのライフサイクルは、ランタイムによって管理されません。同じ登録済みコンポーネントインスタンスが、構成可能なコンテキストの存続期間全体にわたって使用されます。登録されているすべてのコンポーネントインスタンスのフィールドとプロパティには、使用前にランタイムによって宣言された依存関係(Context
を参照)が挿入されます。
component
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントインスタンス。C register(ObjectSE component, int priority)
feature
メタプロバイダーなど)のインスタンスを登録します。 この登録方法は、javax.annotation.Priority
アノテーションを介して登録されたコンポーネントクラスで指定された優先度が、指定された priority
値で上書きされることを除いて、register(Object)
と同じ機能を提供します。
登録されたコンポーネントのクラスによって実装された特定のプロバイダー契約に優先度が適用されない場合、指定された priority
値はその契約では無視されることに注意してください。
component
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントインスタンス。priority
- 登録されたコンポーネントと、コンポーネントが実装するすべてのプロバイダー契約の優先度。C register(ObjectSE component, ClassSE<?>... contracts)
feature
メタプロバイダーなど)のインスタンスを登録します。 この登録方法は、コンポーネントクラスがリストされた拡張プロバイダーまたはメタプロバイダー contracts
のプロバイダーとしてのみ登録されることを除いて、register(Object)
と同じ機能を提供します。明示的に列挙されたすべての契約型は、登録されたコンポーネントによって実装または拡張されたクラスまたはインターフェースを表す必要があります。登録されたコンポーネントクラスが assignable from
SE でない契約は無視する必要があり、実装は無視された契約についてユーザーに通知する警告を生成する必要があります。
component
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントインスタンス。contracts
- コンポーネントを登録する必要があるコンポーネントによって実装される特定の拡張プロバイダーまたはメタプロバイダー契約。実装は、このメソッドを介して契約の空または null
コレクションのコンポーネントクラスを登録する試みを無視する必要があり、そのようなイベントについて警告を発する必要があります。C register(ObjectSE component, MapSE<ClassSE<?>,IntegerSE> contracts)
feature
メタプロバイダーなど)のインスタンスを登録します。 この登録方法は register(Object, Class[])
と同じ機能を提供しますが、javax.annotation.Priority
アノテーションを介して登録されたコンポーネントクラスで指定された優先度は、[ 契約型、優先度 ] の提供されたマップの値として指定された整数の優先度値で、拡張プロバイダー契約型ごとに個別にオーバーライドされます。ペア。
コンポーネントに登録されているプロバイダー契約に優先度が適用されない場合、指定された優先度の値はそのような契約では無視されることに注意してください。
component
- この構成可能なコンテキストのスコープ内で構成されるコンポーネントインスタンス。contracts
- コンポーネントが登録されている特定の拡張プロバイダーとメタプロバイダーの契約およびそれらに関連する優先順位のマップ。マップ内のすべての契約は、コンポーネントによって実装または拡張されたクラスまたはインターフェースを表す必要があります。登録されたコンポーネントクラスが assignable from
SE でない契約は無視する必要があり、実装は無視された契約についてユーザーに通知する警告を生成する必要があります。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.