如何使用@PathParam的自定义类型?

123*_*789 1 java web-services jax-rs jersey

我想使用非spring bean类对象作为jersey web服务类方法的参数.但它在构建时给出了缺少的依赖性错误.

我的代码是:

@Component
@Path("/abcd")
public class ActorServiceEndpoint {

    @POST
    @Path("/test/{nonspringBean}")
    @Produces(MediaType.APPLICATION_XML)
    public void addActor(@PathParam("nonspringBean") MyNonSpringBeanClass nonspringBean){
}

}
Run Code Online (Sandbox Code Playgroud)

Pau*_*tha 5

东西是路径参数以String形式出现.根据规范,如果我们希望将自定义类型注入为@PathParam自定义类,则应该具有以下三种方法之一:

  1. valueOf(String param)返回类型的公共静态
  2. fromString(String param)返回类型的公共静态
  3. 或者是接受String的公共构造函数
  4. 另一种选择实现了ParamConverter.你可以在这里看到一个例子.

如果您不拥有该课程(这是您无法更改的第三方课程),那么您唯一的选择就是使用该课程ParamConverter/ParamConverterProvider.

在这两种情况下,您都需要通过在构造函数中或在上述方法之一中解析String来相应地构造实例.执行此操作后,可以使用注释将自定义类型设置为方法参数.

这同样适用于其他参数,可以如属实@FormParam,@HeaderParam,@QueryParam,等.