Add bean validation dependency
Hibernate provides an implementation of bean-validation. So we will dependent on it. But it has nothing to do with Hiberante ORM.
org.hibernate hibernate-validator 5.1.3.Final
Create a validator class as a spring bean
@Component
public class MyBeanValidator {
@Resource
private Validator validator;
public <T> List<String> validateBean(T bean) {
List<string> errors = new ArrayList<string>();
Set<ConstraintViolation<T> violations = validator.validate(bean);
for (ConstraintViolation<T> violation : violations) {
errors.add(violation.getMessage());
}
return errors;
}
public void setValidator(Validator validator) {
this.validator = validator;
}
}
Use It
@RunWith(MySpringJunit4ClassRunner.class)
@ContextConfiguration(locations = { "/spring/applicationContext-test.xml" })
public class MyBeanValidatorITCase {
@Resource
MyBeanValidator myBeanValidator;
@Test
public void validateBean_InvalidProp() {
Mb mb = new Mb();
List<String> errors = myBeanValidator.validateBean(mb, "bean-null");
Assert.assertEquals(2, errors.size());
Assert.assertTrue(errors.contains("email-null"));
Assert.assertTrue(errors.contains("password-null"));
}
@Test
public void validateBean_NoErrors() {
Mb mb = new Mb();
mb.email = "hi@hi.com";
mb.password = "heyya";
List<String> errors = myBeanValidator.validateBean(mb, "bean-null");
Assert.assertEquals(0, errors.size());
}
private static class Mb {
@NotNull(message = "email-null")
private String email;
@NotNull(message = "password-null")
private String password;
}
}