我想使用非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){
}
}
答案 0 :(得分:5)
东西是路径参数以String形式出现。根据规范,如果我们希望将自定义类型注入@PathParam
,则自定义类应该具有以下三种方法之一:
valueOf(String param)
fromString(String param)
ParamConverter
。您可以看到示例here。如果您不拥有该课程(这是您无法更改的第三方课程),那么您唯一的选择就是使用ParamConverter/ParamConverterProvider
对。
在这些情况中的任何一种情况下,您都需要通过在构造函数中或在上述方法之一中解析String来相应地构造实例。执行此操作后,可以使用注释将自定义类型设置为方法参数。
其他参数也是如此,例如@FormParam
,@HeaderParam
,@QueryParam
等。
答案 1 :(得分:0)
如果您提供了更多有关错误的详细信息,这会有所帮助,但我发现您的代码段存在两个问题:
正确的Spring注释是@PathVariable,@ PathParam可能是来自另一个包。这不适用,因为我猜您正在使用JAX-RS,而不是春天注释。
我不确定哪些转换器应用于路径变量,但无论如何它都需要有一个用于MyNonSpringBeanClass。我将获取一个String参数,然后在函数体中自己实例化MyNonSpringBeanClass。