第47章 リソースクラスとメソッドへの情報の受け渡し
概要
JAX-RS は、開発者がリソースに渡される情報の出所を制御できるようにするアノテーションを複数指定します。アノテーションは、URI のマトリックスパラメーターなど、一般的な HTTP の概念に準拠しています。標準 API を使用すると、メソッドパラメーター、Bean プロパティー、およびリソースクラスフィールドでアノテーションを使用できます。Apache CXF には、一連のパラメーターを Bean に注入できるようにする拡張機能が含まれています。
47.1. データ注入の基本
概要
HTTP リクエストメッセージからのデータを使用して初期化されるパラメーター、フィールド、および Bean プロパティーには、ランタイムでそれらの値が注入されます。注入される特定のデータは、「JAX-RS API の使用」 で説明されている一連のアノテーションによって指定されます。
JAX-RS 仕様では、データが挿入されるタイミングにいくつかの制限があります。また、リクエストデータを挿入できるオブジェクトのタイプにも制限があります。
データが注入されるタイミング
要求データは、要求によりインスタンス化された時にオブジェクトに挿入されます。つまり、リソースに直接対応するオブジェクトのみがインジェクションアノテーションを使用できます。46章リソースの作成 で説明されているように、これらのオブジェクトは、@Path
アノテーションが付けられたルートリソースまたはサブリソースロケーターメソッドから返されたオブジェクトのいずれかになります。
サポートされるデータタイプ
データを挿入できる特定のデータタイプセットは、挿入されたデータのソースを指定するために使用されるアノテーションによって異なります。ただし、すべてのインジェクションアノテーションは、少なくとも以下のデータタイプのセットをサポートします。
-
int
、char
、またはlong
などのプリミティブ -
単一の
String
引数を受け入れるコンストラクターを持つオブジェクト -
単一の
String
引数を受け入れる静的valueOf()
メソッドを持つオブジェクト - List<T>、Set<T>、または SortedSet<T> オブジェクト。ここで T はリスト内の他の条件を満たします。
インジェクションアノテーションがサポートされるデータ型に対する要件が異なる場合、アノテーションについては相違点が強調表示されます。