ConfigurationProperties

ConfigurationProperties

我有一个身份验证服务,我想在运行时对其进行自动配置,但是将为开发和测试模拟该服务。我想使用@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;
}

这样,它只会根据您选择实时或模拟的配置文件而有条件地创建。
比起您可以将@Profile身份验证类的选定配置文件使用单独的方法,还是使用@ConditionalOnBean。那就是个人资料的用途,或者我可能误解了这个问题。

10-01 03:44