Spring アプリケーションの 1 つで、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検証される Service クラスに応じて異なるバリデーターを使用するように構成済みに指示する方法、またはこの種のシナリオを処理するための適切な方法を理解できませんでした。助けていただければ幸いです。
更新: チケットを作成しました: https://jira.spring.io/browse/SPR-12563