47.4. 使用 Apache CXF 扩展
概述
Apache CXF 为标准 JAX-WS 注入机制提供了一个扩展,供开发人员使用单个注释替换一系列注入注释。单个注解放置在包含使用注解提取数据的 bean 中。例如,如果某个资源方法预期一个请求 URI,它包括三个名为 id
的查询参数,键入
,并且 大小
,它可以使用一个 @QueryParam
注释,将所有参数注入到包含对应字段的 bean 中。
注意
考虑改为使用 @BeanParam
注释(自 JAX-RS 2.0 起可用)。标准化 @BeanParam
方法比专有的 Apache CXF 扩展更灵活,因此建议的替代方案。详情请查看 第 47.2.6 节 “将参数注入 Java Bean”。
支持的注入注解
这个扩展不支持所有注入参数。它只支持以下内容:
-
@PathParam
-
@QueryParam
-
@MatrixParam
-
@FormParam
语法
要指示注解将使用串行注入进入 bean,您需要执行以下两个操作:
-
将注解的参数指定为空字符串。例如,
@PathParam ("")
指定一系列 URI 模板变量被序列化为 bean。 - 确保注解的参数为 bean,其字段与注入的值匹配。
示例
例 47.7 “将查询参数注入 bean” 显示了将多个 Query 参数注入 bean 的示例。资源方法预期请求 URI 包括两个查询参数: type
和 id
。其值注入 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; ... }