如何让SpringBoot在创建所有其他bean之前创建一个bean验证程序

如何让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

我正在尝试向现有的Spring Boot web应用程序添加一个
LocalValidatoryFactoryBean

无论我尝试了什么(稍后列出),它只会在大多数其他bean之后创建验证器(通过日志记录和断点进行验证),所以它们永远不会得到验证

另一方面,我在类路径上有hibernate validator,并试图对我的
@组件
属性使用javax.validation.constraints

应用程序类具有
@Configuration
@EnableAutoConfiguration
@ComponentScan({“my.package.**”})

  • 使用bean添加application.xml
  • 将上述bean添加到validator.xml并添加
    @ImportResource(“validator.xml”)
  • 向应用程序类添加新的
    @Bean
    <代码>公共验证器验证器(){返回新的LocalValidatoryFactoryBean();}
  • 向上述
    @Bean
  • @组件
    添加到扫描的包中
  • 并向其添加
    @Order
在所有情况下,只有在FilterRegistrationBean完成其业务日志记录后,才会加载验证器,但我要验证的bean已经创建并用于设置数据连接和安全性(例如)

我已经有几年没有使用Spring了,但我不记得在application.xml中定义所有内容时遇到过这些问题。这只是spring boot不支持的东西吗?我应该回到传统的spring应用程序配置吗


如何让它验证我所有的bean?

我忘了做一个
BeanValidationPostProcessor

afaik只添加一个验证器对你没有帮助,不管它被实例化的时间有多早(除非Spring Boot的
@ConfigurationProperties
支持它,并且在过程的早期执行,因此已经有一个实例供您使用)但是它不会验证
@组件
bean。如果相关的话,值当前是从yaml设置的。使用@Value可以提供默认值。这仍然不会验证它们,因为它只适用于
@ConfigurationProperties
中的spring boot,不适用于其他bean。我也不记得曾经有过类似的情况可用…但它通常适用于普通的Spring应用程序,对吗?不,我不知道,至少不适用于在应用程序上下文中验证bean。它适用于hibernate实体和web mvc。不适用于应用程序上下文中的任意bean。在Spring的13年中,我从未见过没有自定义
BeanPostProcessor所以不,它从来没有像那样开箱即用。