是否有使用带注释的方法参数启用JSR 303 Bean验证的标准方法

sfu*_*ger 10 java aop spring hibernate-validator bean-validation

我一直在寻找一段时间没有运气.我没有使用Spring MVC,但仍想使用它@javax.validation.Valid来启用方法参数的验证.举个例子

public class EventServiceImpl implements IEventService {
    @Override
    public void invite(@Valid Event event, @Valid User user) { ... }
}
Run Code Online (Sandbox Code Playgroud)

使用MVC,这对带@Controller注释的bean的启用很简单<mvc:annotation-driven/>(参见5.7.4.3配置JSR-303验证器供Spring MVC使用).

使用AOP应该是非常简单的.不过,我怀疑有一些标准的方法可以做到这一点.因此,问题是:对于非MVC应用程序和非控制器bean,是否存在类似的事情,以便为带注释的bean启用输入验证?

Har*_*rdy 7

方法级别验证不是Bean Validation规范(JSR 303)的一部分.方法级别验证是附录C中添加的规范中的建议.

Hibernate Validator 4.2(beta已经出来)正在实现这个建议,并允许在方法参数和返回值上放置JSR 303注释.当然你仍然需要一些Spring胶水代码,但这不应该太难.

此外,Bean Validation 1.1将正式添加方法级别验证(不仅仅是附录/建议).另见http://beanvalidation.org/