小编典典

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

java

我想将非spring bean类对象用作球衣Web服务类方法的参数。但是它在构建时会给出缺少的依赖项错误。

我的代码是:

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

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

}

阅读 415

收藏
2020-11-26

共1个答案

小编典典

关键是路径参数以字符串形式出现。根据规范,如果我们希望将自定义类型作为注入@PathParam,则自定义类应具有以下三项之一:

  1. valueOf(String param)返回类型的公共静态
  2. fromString(String param)返回类型的公共静态
  3. 或接受字符串的公共构造函数
  4. 另一种选择实现ParamConverter。您可以在此处查看示例。

如果您不拥有该类(它是无法更改的第三方类),那么您唯一的选择是使用该ParamConverter/ParamConverterProvider对。

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

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

2020-11-26