Menu Close

第47章 リソースクラスとメソッドに情報を渡す

概要

JAX-RS では、リソースに渡される情報の取得元を開発者が制御できるようにする多くのアノテーションを指定します。アノテーションは、URI のマトリックスパラメーターなどの共通の HTTP の概念に準拠します。標準の API では、メソッドパラメーター、Bean プロパティー、およびリソースクラスフィールドでアノテーションを使用できます。Apache CXF は、Bean に注入される一連のパラメーターの注入を可能にするエクステンションを提供します。

47.1. データ注入の基本

概要

HTTP リクエストメッセージのデータを使用して初期化されるパラメーター、フィールド、および Bean プロパティーはランタイムによって値が注入されます。注入される特定のデータは、「JAX-RS API の使用」 に記載されているアノテーションのセットによって指定されます。

JAX-RS 仕様では、データが挿入されるタイミングにいくつかの制限があります。また、リクエストデータを挿入できるオブジェクトのタイプにもいくつかの制限があります。

データが注入されるとき

リクエストデータは、リクエストによってインスタンス化されるときにオブジェクトに注入されます。そのため、リソースに直接対応するオブジェクトのみがインジェクションアノテーションを使用できます。46章リソースの作成 で説明されているように、これらのオブジェクトは、@Path アノテーションが付けられたルートリソースまたはサブリソースロケーターメソッドから返されたオブジェクトのいずれかになります。

サポートされるデータ型

データを挿入できる特定のデータ型のセットは、挿入されるデータのソースを指定するために使用されるアノテーションによって異なります。ただし、インジェクションアノテーションはすべて、少なくとも以下のデータ型のセットをサポートしています。

  • intcharlong などのプリミティブ。
  • 単一の String 引数を受け入れるコンストラクターを持つオブジェクト
  • 単一の String 引数を受け入れる静的 valueOf() メソッドを持つオブジェクト
  • List<T>、Set<T>、または SortedSet<T> 。ここで T はリスト内の他の条件を満たします。
注記

インジェクションアノテーションがサポートされているデータ型の要件が異なる場合は、アノテーションの説明で相違点が強調されています。