Java 我应该在JAX-RS中使用@QueryParam还是@BeanParam?
我正在考虑处理查询/请求参数的两个选项:Java 我应该在JAX-RS中使用@QueryParam还是@BeanParam?,java,jax-rs,Java,Jax Rs,我正在考虑处理查询/请求参数的两个选项: 将各个参数映射到对应的方法参数: @GET 公共字符串blah(@QueryParam(“testParam”)字符串testParam){ } 将所有参数映射到Java bean的属性: @GET 公共字符串blah(@beanParamRequestParamBean){ } 第二个选项似乎更具吸引力,因为它允许移动输入查询参数的验证逻辑,并将其与blah方法分离,后者的核心职责应该是处理验证,并且将验证委托给验证器应该是高度分离的(也是可靠的原
@GET
公共字符串blah(@QueryParam(“testParam”)字符串testParam){
}
@GET
公共字符串blah(@beanParamRequestParamBean){
}
第二个选项似乎更具吸引力,因为它允许移动输入查询参数的验证逻辑,并将其与blah
方法分离,后者的核心职责应该是处理验证,并且将验证委托给验证器应该是高度分离的(也是可靠的原则,对吧?)
然而,我看到的大多数示例(事实上,我正在处理的现有项目)仅使用第一个选项。我想知道第二种选择没有被广泛使用的原因是什么?有什么陷阱吗?这是反模式吗?这是否违反了任何最佳实践?该注释是在JAX-RS 2.0中作为参数聚合器引入的(这意味着它不能在JAX-RS 1.0中使用)
注释背后的思想是使用Java类来聚合使用
@XxxParam
注释注释的参数。以下@XxxParam
注释可用于注释参数聚合器类的字段:
@XxxParam
注释注释的字段外,参数聚合器类还可以用注释注释字段。有关可与注释一起注入的类型的列表
我相信这只是一个方便和开发者偏好的问题。在许多情况下,不需要类来聚合参数。在方法参数中使用
@XxxParam
注释非常方便
但是,当您需要在不同的方法中重用参数,或者该方法有许多用@XxxParam
注释注释的参数时,请使用这种方法
在你的问题中,你提到了。但别忘了:)
从方法参数中的
@XxxParam
注释开始,不要过度使用注释来解决您没有的问题。如果需要,您可以随时重构代码以创建参数聚合器类。非常感谢您的回复。我不明白最后一段。我想使用@BeanParam的原因是将验证逻辑委托给其他地方,因为方法中50%以上的代码用于方法参数验证。此外,不同方法之间的输入参数验证不一致-即一些方法根本不进行测试。因此,如果我们有一种机制可以确保我们能够适应所有这些情况,那将是一件好事。@user1539343如果@BeanParam
提供了您所需要的,请使用它:)