小编典典

JSR303。验证方法参数并引发异常

java

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

例如像这样:public void createUser(@ValidOrThrowException User user) {...}

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

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

而且我觉得这很丑。

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


阅读 212

收藏
2020-11-23

共1个答案

小编典典

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

可以使用动态代理,AOP,拦截器等方法在约束方法调用后自动调用验证引擎。根据所使用的框架,您可以使用例如以下一种方法:

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

2020-11-23