如何在条件属性上编写 consul 配置类,我已经完成并使用属性进行了测试,
但是要编写配置类,并且该配置应按条件加载。
答案 0 :(得分:2)
如果我的问题没对,您想创建一个配置类,但仅在满足某些条件时才加载此配置:
@Configuration
public class MyConfiguration {
@Bean
public ??? myBean() {
....
}
}
在这种情况下,应该使用Spring 4随附的@Conditional
批注。
有许多类似@Conditional
的注释,您应该只查看所需的注释。
如果这还不够,您甚至可以使用自己的条件逻辑。由于不是直接在问题中提出问题,因此,我仅提供一个链接({其中一个)articles,其中显示了操作方法。
例如,您可以使用
@Configuration
@ConditionalOnProperty(value="my.consul.integration.enabled", havingValue = "true")
public class MyConfiguration {
@Bean
public ??? myBean() {
....
}
}
您还可以将条件逻辑放在单个bean的粒度上。
仅当启用了某个属性(您的评论中的tools.consul.enabled=true
)时,此要求才运行领事配置
这个想法是要定义一组与领事相关的属性,而不是在默认的application.yml
文件中,而是在其他地方(例如consul-integration.properties
文件中),并使用仅在以下情况下打开的配置读取该文件: @ConditionOnProperty
被满足。
示例:
@Configuration
@ConditionalOnProperty(value="tools.consul.enabled", havingValue=true)
@PropertySources({
@PropertySource("classpath:consul-integration.properties)
})
public class ToolConsulSampleConfiguration {
}