Мне просто интересно проверить правильность данных в Spring.Spring предлагает два (возможно, больше) варианта проверки.Первый вариант - использовать интерфейс Validator и создать полную проверку самостоятельно.Второй вариант - использовать проверку аннотаций (JSR 303).
И теперь я действительно запутался :), какую проверку я должен выбрать.Мне нужно проверить правильность полученного объекта данных (под правильным подразумевается, что все обязательные поля заполнены), и это можно сделать с помощью проверки JSR 303 или моего собственного средства проверки с «экземпляром валидатора».Но мне также нужно проверить, действителен ли этот объект данных в отношении некоторых ограничений базы данных (для проверки некоторых данных в базе данных требуется валидатор, например, зарегистрирован пользователь с этим идентификатором или нет ...), и это может быть сделано только моим собственнымвалидатор.
Я не знаю, какой путь должен быть лучшим.Объединить оба или создать свой собственный валидатор?
Буду благодарен за любой совет ...
Обновление (перенесено из комментариев)
Хорошо,Я последовал примеру Райана и думаю, что добился успеха.Я создал собственную реализацию Spring Validator и в этом экземпляре Validator I @ Autowire-d javax JSR 303.Но была проблема с этой инъекцией.Я имел в своей конфигурации, и этот кусок кода вызвал некоторые исключения, потому что Spring не знал, какой Validator я хочу внедрить.Поэтому я удалил этот код.
В конце я также удалил реализацию Spring Validator, потому что я не знаю, где я могу получить свойство Errors, которое требуется в качестве второго параметра в методе «validate» :).Я запускаю эту проверку вручную из сервисного уровня, и я действительно не знаю, где я могу получить этот объект Error.
Кстати, я нашел другое решение, как реализовать эту проверку.Я думаю о расширении моего класса валидатора с помощью LocalValidatorFactoryBean.Класс LocalValidatorFactoryBean, реализующий оба интерфейса Validator (Spring Validator + JSR 303).Но я не уверен, что это хороший подход.Этот подход также требует объекта Error, который я не знаю, где найти / получить.
Update Объект Error происходит из "BindException".
FooObjectVO myObject = new FooObjectVO();
BindException errors = new BindException("fooObject", myObject);