47.4. Apache CXF エクステンションの使用
概要
Apache CXF では、標準の JAX-WS インジェクションメカニズムへのエクステンションを提供しており、開発者が一連のインジェクションアノテーションを単一のアノテーションで置き換えることができます。アノテーションを使用して抽出されたデータのフィールドを含む Bean に、単一のアノテーションが配置されます。たとえば、リソースメソッドに id
、type
、および size
という 3 つのクエリーパラメーターが含まれることが想定される場合、単一の @QueryParam
アノテーションを使用して、対応するフィールドを持つ Bean にすべてのパラメーターを注入できます。
代わりに @BeanParam
アノテーションの使用を検討してください (JAX-RS 2.0 以降で利用可能)。標準的な @BeanParam
のアプローチはプロプライエタリー Apache CXF エクステンションよりも柔軟性が高いため、推奨される代替手段となります。詳細は、「Java Bean へのパラメーターの挿入」 を参照してください。
サポートされるインジェクションアノテーション
このエクステンションは、すべてのインジェクションパラメーターをサポートする訳ではありません。以下のみをサポートします。
-
@PathParam
-
@QueryParam
-
@MatrixParam
-
@FormParam
構文
アノテーションが Bean へのシリアルインジェクションを使用することを指定するには、以下の 2 点を実行する必要があります。
-
アノテーションのパラメーターを空の文字列として指定します。たとえば、
@PathParam("")
は、URI テンプレート変数のシーケンスを Bean にシリアライズするように指定します。 - アノテーション付きのパラメーターが、挿入される値と一致するフィールドを含む Bean であることを確認します。
例
例47.7「クエリーパラメーターの Bean へのインジェクト」 は、多数のクエリーパラメーターを Bean に挿入する例を示しています。リソースメソッドでは、リクエスト URI に type
および id
の 2 つのクエリーパラメーターが含まれることが想定されています。これらの値は、Monster
Bean の対応するフィールドに注入されます。
例47.7 クエリーパラメーターの Bean へのインジェクト
import javax.ws.rs.QueryParam; import javax.ws.rs.PathParam; import javax.ws.rs.POST; import javax.ws.rs.Path; ... @Path("/monstersforhire/") public class MonsterService { ... @POST public void updateMonster(@QueryParam("") Monster bean) { ... } ... } public class Monster { String type; String id; ... }