如何让SpringBoot在创建所有其他bean之前创建一个bean验证程序
我正在尝试向现有的Spring Boot web应用程序添加一个如何让SpringBoot在创建所有其他bean之前创建一个bean验证程序,spring,spring-boot,spring-validator,Spring,Spring Boot,Spring Validator,我正在尝试向现有的Spring Boot web应用程序添加一个LocalValidatoryFactoryBean 无论我尝试了什么(稍后列出),它只会在大多数其他bean之后创建验证器(通过日志记录和断点进行验证),所以它们永远不会得到验证 另一方面,我在类路径上有hibernate validator,并试图对我的@组件属性使用javax.validation.constraints 应用程序类具有@Configuration、@EnableAutoConfiguration和@Compo
LocalValidatoryFactoryBean
无论我尝试了什么(稍后列出),它只会在大多数其他bean之后创建验证器(通过日志记录和断点进行验证),所以它们永远不会得到验证
另一方面,我在类路径上有hibernate validator,并试图对我的@组件
属性使用javax.validation.constraints
应用程序类具有@Configuration
、@EnableAutoConfiguration
和@ComponentScan({“my.package.**”})
- 使用bean添加application.xml
- 将上述bean添加到validator.xml并添加
@ImportResource(“validator.xml”)
- 向应用程序类添加新的
<代码>公共验证器验证器(){返回新的LocalValidatoryFactoryBean();}@Bean
- 向上述
@Bean
- 将
添加到扫描的包中@组件
- 并向其添加
@Order
如何让它验证我所有的bean?我忘了做一个
BeanValidationPostProcessor
afaik只添加一个验证器对你没有帮助,不管它被实例化的时间有多早(除非Spring Boot的@ConfigurationProperties
支持它,并且在过程的早期执行,因此已经有一个实例供您使用)但是它不会验证@组件
bean。如果相关的话,值当前是从yaml设置的。使用@Value可以提供默认值。这仍然不会验证它们,因为它只适用于@ConfigurationProperties
中的spring boot,不适用于其他bean。我也不记得曾经有过类似的情况可用…但它通常适用于普通的Spring应用程序,对吗?不,我不知道,至少不适用于在应用程序上下文中验证bean。它适用于hibernate实体和web mvc。不适用于应用程序上下文中的任意bean。在Spring的13年中,我从未见过没有自定义BeanPostProcessor
所以不,它从来没有像那样开箱即用。