在我的一个 Spring 应用程序中,我计划MethodValidationPostProcessor
用于验证服务方法参数。据我所知,为此,我必须MethodValidationPostProcessor
在 ApplicationContext 中有一个对象,而该对象又必须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
根据正在验证的服务类来告诉配置使用不同的验证器,或者什么可能是处理这种情况的好方法。我会很感激帮助。