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