java - 以 @ConfigurationProperties 为条件的 Spring Boot

标签 java spring spring-boot

我有一个身份验证服务,我想在运行时自动配置它,但它会被模拟用于开发和测试。我想使用 @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/

相关文章:

java - Java EE部署中的Spring类加载机制

spring - 为什么第二级嵌套列表的@NotNull 验证在顶级更新时失败?

spring - 在没有 Spring Boot 的情况下创建上下文后防止 Spring Batch 自 Action 业触发

java - 这个错误试图在 NetBeans 中告诉我什么?

java - 使用javafx向mysql数据库插入数据时出错

spring - 从BOM跟踪 jar

spring-boot - Spring 启动应用程序: how to hotfix js changes

java - 使用的 Mapstruct 不实例化类

java - 如何使用 CustomArrayAdapter 区分 ListFragment 中的 View ?

java - 汉诺塔 : Finding the n-th configuration