5

在我的一个 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根据正在验证的服务类来告诉配置使用不同的验证器,或者什么可能是处理这种情况的好方法。我会很感激帮助。

更新:已创建票证:https ://jira.spring.io/browse/SPR-12563

4

0 回答 0