У меня есть Application Level Service
ниже:
@Service
public class DatasetApplicationService {
private DatasetRepository datasetRepository;
@Autowired
public DatasetApplicationService(DatasetRepository datasetRepository) {
this.datasetRepository = datasetRepository;
}
@Transactional
public Dataset createDataset(@Valid CreateDatasetCommand newDatasetParams) {
...
}
}
Посмотрите на метод DatasetApplicationService.createDataset
, параметр CreateDatasetCommand
отправляется в него с аннотацией @Valid
.Аннотация может быть запущена для проверки CreateDatasetCommand
при вызове метода (см. Проверка бина пружинной загрузки ).
У меня вопрос: могу ли я предоставить специальный валидатор для определенного параметра.Например, у меня есть CreateDatasetCommandValidator
, который реализует org.springframework.validation.Validator
Я хочу вызвать этот валидатор перед вызовом метода.
Я провожу некоторые исследования с InitBinder
, но, похоже, он не срабатывает во время процесса, НЕУДАЧНЫЙ ПРИМЕР :
@Service
public class DatasetApplicationService {
private DatasetRepository datasetRepository;
private CreateDatasetCommandValidator validator;
@InitBinder // <----- this is not triggered
protected void initBinder(DataBinder binder) {
binder.setValidator(validator);
}
@Autowired
public DatasetApplicationService(DatasetRepository datasetRepository,
CreateDatasetCommandValidator validator) {
this.datasetRepository = datasetRepository;
this.validator = validator;
}
@Transactional
public Dataset createDataset(@Valid CreateDatasetCommand newDatasetParams) {
...
}
}