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 中,您需要执行两个操作:

  1. 将注解的参数指定为空字符串。例如,@PathParam ("") 指定将一系列 URI 模板变量序列化为 bean。
  2. 确保 annotated 参数是一个 bean,其中包含与要注入的值匹配的字段。

Example

例 47.7 “将查询参数注入 bean” 演示了将多个 Query 参数注入 bean 的示例。资源方法预期请求 URI 包含两个查询参数: typeid。其值注入到 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;

  ...
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.