使用JSR-303进行方法参数验证

Tom*_*ker 10 java spring bean-validation

JSR-303是否也用于方法参数验证?

如果是这样,网上有什么例子吗?我面临的最大挑战是如何在每种方法中获得验证器.对于Spring 3,这不是说我几乎要为每个班级注入一个LocalValidatorFactoryBean

谢谢!

Gun*_*nar 10

JSR 303的参考实现Hibernate Validator的即将发布的版本4.2将支持方法级验证.

正如前面的答案所指出的,这将允许在方法参数中指定约束注释(内置以及自定义定义类型),并返回值以指定方法调用的前置条件和后置条件.

请注意,HV仅处理方法调用的实际验证,而不是触发此类验证.验证调用可以使用AOP或其他方法拦截工具完成,例如JDK的动态代理.

JIRA问题是HV-347 [1],因此您可能希望将自己添加为此问题的观察者.

[1] http://opensource.atlassian.com/projects/hibernate/browse/HV-347


Sea*_*oyd 2

这听起来像是 AOP (AspectJ) 的一个用例。为用 注释的方法编写切入点javax.validation.constraints.*,将验证器注入到方面(可能使用 Spring)并使用@Before@Around建议在方法执行之前执行验证。

阅读AspectJ in Action以供参考。