Я пытаюсь добавить LocalValidatorFactoryBean
в существующее веб-приложение Spring Boot.
Независимо от того, что я пробовал (перечислено ниже), он создает валидатор только после большинства других компонентов (проверено как с помощью журналирования, так и с помощью точек останова), поэтому они никогда не проверяются.
Кстати, у меня есть hibernate-validator в пути к классам, и я пытаюсь использовать javax.validation.constraints для своих свойств @Component
.
Класс приложения имеет @Configuration
, @EnableAutoConfiguration
и @ComponentScan({"my.package.**"})
.
- Добавление application.xml с bean-компонентом
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
- Добавление вышеуказанного bean-компонента в validator.xml и добавление
@ImportResource("validator.xml")
- Добавление нового
@Bean
в класс Application.public Validator validator() { return new LocalValidatorFactoryBean(); }
- Добавление
@Order(Ordered.HIGHEST_PRECEDENCE)
к вышеуказанному@Bean
- Добавление BeanValidator
@Component
к отсканированным пакетам. - И добавив к нему
@Order
.
Во всех случаях валидатор загружается только после того, как FilterRegistrationBean закончит регистрацию своей работы, но bean-компоненты, которые я хочу проверить, уже созданы и используются, например, при настройке соединений данных и безопасности.
Прошло несколько лет с тех пор, как я использовал Spring, но я не помню этих проблем при определении всего в application.xml. Это просто то, что spring-boot не поддерживает, и мне следует вернуться к традиционной конфигурации приложения Spring?
Как я могу заставить его проверять все мои бобы?
@ConfigurationProperties
для Spring Boot, который поддерживает его и выполняется на ранней стадии процесса, поэтому для вас уже есть экземпляр ), но не проверяет@Component
bean-компоненты. - person M. Deinum   schedule 08.12.2015@ConfigurationProperties
, а не для других компонентов. И я не припомню, чтобы что-то подобное когда-либо было доступно... - person M. Deinum   schedule 08.12.2015BeanPostProcessor
. Так что нет, это никогда не работало так «из коробки». - person M. Deinum   schedule 08.12.2015