问题描述
我在资源类中声明了以下方法。
@Path("{id:\\d+}")
@PUT
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public Response putPerson(@PathParam("id") long id,Person person) {
logger.debug("Going to update the person with id: {} to name {} age {} and salary {}",id,person.getName(),person.getAge(),person.getSalary());
db.put(id,person);
return Response.noContent().build();
}
在这里,我知道由于@PathParam批注,我的{id}路径值确实注入了id参数。但是我很好奇 @Consumes批注声明的输入媒体如何注入到person参数中?我想知道,因为没有声明用于将任何值注入person参数的批注。
我知道确实注入了媒体,因为我的logger语句确实打印了正确的值。
此注入过程是否记录在Jersey用户手册或任何JavaDocs中?
解决方法
我确实在section 7.1的《泽西岛用户指南》(2.31版)中找到了答案。它读取以下内容。
与提取方法相关的方法参数不同 请求参数,与 被消耗的表示形式不需要注释。其他 表示(实体)参数的单词不需要 具体的“实体”注释。没有注释的方法参数 是一个实体。 最多可以有一个这样的未注释方法参数 存在,因为最多只能有一个这样的表示 发送请求。