我有一个身份验证服务,我想在运行时自动配置它,但它会被模拟用于开发和测试。我想使用 @ConfigurationProperties
功能来定义必要的参数,但我还需要能够有条件地创建 AuthenticationManager
实例,具体取决于实时服务是否已配置。
我想采用的方法是使用类似 @ConditionalOnBean(AuthProperties.class)
的方法,但是
Spring Boot 会创建我的 @ConfigurationProperties
类的 bean,而不管这些属性是否存在。我可以对字段应用验证注释,但如果未配置实时服务,则上下文根本不会启动。
是否有一种干净的方法可以使配置部分以在 @ConfigurationProperties
类中指定的属性为条件,而无需在 @ConditionalOnProperty
中重复属性名称?
最佳答案
你不能只使用你的 application-some_profile.properties 文件的配置文件,然后像这样有条件地创建你的属性 bean
@Profile("some_profile")
@Component
@ConfigurationProperties(prefix = "some.selector")
public Class YourConfiguration{
private property option;
}
这样它只会根据您选择实时或模拟的配置文件有条件地创建。 比起您可以将选定的配置文件用于您的 @Configuration 身份验证类以使用单独的方法,或者遵循 @ConditionalOnBean。这就是配置文件的用途,或者我可能误解了这个问题。
关于java - 以 @ConfigurationProperties 为条件的 Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27845102/