我正在尝试将一个添加LocalValidatorFactoryBean
到现有的 Spring Boot Web 应用程序中。
无论我尝试过什么(稍后列出),它只会在大多数其他 bean 之后创建验证器(通过日志记录和断点验证),因此它们永远不会得到验证。
切线地,我在类路径上有hibernate-validator,并试图在我的@Component
属性上使用javax.validation.constraints。
应用程序类有@Configuration
,@EnableAutoConfiguration
和@ComponentScan({"my.package.**"})
.
- 使用 bean 添加 application.xml
<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 应用程序配置吗?
我怎样才能让它验证我所有的豆子?