我想将非spring bean类对象用作球衣Web服务类方法的参数.但这在构建时会给出缺少的依赖项错误.
我的代码是:
@Component
@Path("/abcd")
public class ActorServiceEndpoint {
@POST
@Path("/test/{nonspringBean}")
@Produces(MediaType.APPLICATION_XML)
public void addActor(@PathParam("nonspringBean") MyNonSpringBeanClass nonspringBean){
}
}
解决方法:
问题是路径参数以字符串形式出现.根据规范,如果我们希望将自定义类型作为@PathParam注入,则自定义类应具有以下三项之一:
>返回类型的公共静态valueOf(String param)
>一个公共静态fromString(String param)返回类型
>或接受字符串的公共构造函数
>另一个选项实现ParamConverter
.您可以看到示例here.
如果您不拥有该类(它是无法更改的第三方类),那么您唯一的选择是使用ParamConverter / ParamConverterProvider对.
在这两种情况下,您都希望通过在构造函数或上述方法之一中解析String来相应地构造实例.完成此操作后,可以将自定义类型作为带有注释的方法参数.
对于其他参数,例如@ FormParam,@ HeaderParam,@ QueryParam等,也是如此.