在我的一个Spring应用程序中,我计划使用MethodValidationPostProcessor
来验证服务方法参数。据我所知,为此,我必须在ApplicationContext中有一个MethodValidationPostProcessor
对象,而后者必须注入一个validator
。我在@Configuration
课程中这样做:
@Bean
public LocalValidatorFactoryBean validator() {
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcessor getMethodValidationPostProcessor(){
MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
processor.setValidator(validator());
return processor;
}
然后,我的服务类看起来像这样:
@Service
@Validated
public class SomeService {
public void someMethod(@Valid SomeForm someForm) {
.
.
.
}
}
但是,我的一些对象需要一些自定义验证器。例如,对于注册表单,我计划使用 JoinDataValidator 扩展LocalValidatorFactoryBean
,如下所示:
@Service("joinDataValidator")
public class JoinDataValidator extends LocalValidatorFactoryBean {
@Override
public void validate(final Object target, final Errors errors) {
super.validate(target, errors);
// check for duplicate email
}
@Override
public boolean supports(Class<?> clazz) {
return JoinForm.class.equals(clazz);
}
}
因此,对于不同的服务类,我需要多个验证器。我无法弄清楚如何告诉配置的MethodValidationPostProcessor
使用不同的验证器,具体取决于要验证的Service类,或者什么是处理这种场景的好方法。我很感激帮助。
更新:创建了一张票证:https://jira.spring.io/browse/SPR-12563