编程语言
首页 > 编程语言> > java-JSR303.验证方法参数并引发异常

java-JSR303.验证方法参数并引发异常

作者:互联网

如果参数无效,如何使用JSR-303验证方法参数并引发异常?

例如这样的示例:public void createUser(@ValidOrThrowException用户user){…}?

现在,我检查方法主体中的每个方法参数,例如

public void createUser(User user) {
    ConstraintViolations violations = Validator.validate(user);
    if (!violations.isEmpty()) {
        throw new IllegalArgumentException(createExceptionMessage(violations ));
    }
    ...//business logic
}

而且我觉得这很丑.

附:作为参考实现,我使用Hibernate-validator 4.1.0.Final

解决方法:

如果可以升级到Hibernate Validator 4.2.0或更高版本,则可以使用其method validation feature,它为方法参数和返回值的验证提供支持.

验证引擎可以在使用动态代理,AOP,拦截器等方法调用受限方法时自动调用.根据您使用的框架,您可以例如使用以下之一:

>使用Spring 3.1或更高版本时:MethodValidationInterceptor
>使用CDI时:Seam Validation(免责声明:我是这个的作者)
>使用Guice时:我在GitHub上添加了example for this

请注意,从Bean Validation 1.1(即将完成)及其参考实现Hibernate Validator 5开始,方法验证将成为标准化Bean Validation API的一部分.

标签:hibernate-validator,java,bean-validation
来源: https://codeday.me/bug/20191009/1879529.html