我想在一个大对象上使用像@NotNull, @Size
这样的BeanValidation机制。我只想验证我使用的某些属性。
该对象来自外部库,因此无法向其吸气剂添加注释。我也不想手动创建自己的对象并制作项目的深层副本。
我可以对无法更改的类使用BeanValidation框架吗?相似:
class MyValidator {
@NotNull
static String getUsername(ExternalClass ext) {
return ext.getUser();
}
}
最佳答案
正如mvb13回答的那样,您可以为此使用基于XML的配置。如果您将Hibernate Validator用作BV提供程序,则还可以利用API for programmatic constraint declaration:
HibernateValidatorConfiguration configuration = Validation
.byProvider( HibernateValidator.class )
.configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.type( ExternalClass.class )
.property( "someProperty", FIELD )
.constraint( new NotNullDef() )
.constraint( new SizeDef().min( 2 ).max( 14 ) )
.type( AnotherExternalClass.class )
.property( "anotherProperty", METHOD )
.constraint( new NotNullDef() );
Validator validator = configuration.addMapping( constraintMapping )
.buildValidatorFactory()
.getValidator();