【发布时间】:2018-07-02 07:21:13
【问题描述】:
如何在条件属性上写consul配置类,我已经用属性做了测试,
但是想编写配置类,并且该配置应该在条件下加载。
【问题讨论】:
标签: spring-boot consul spring-cloud-consul
如何在条件属性上写consul配置类,我已经用属性做了测试,
但是想编写配置类,并且该配置应该在条件下加载。
【问题讨论】:
标签: spring-boot consul spring-cloud-consul
如果我的问题是正确的,您想创建一个配置类,但仅在满足某些条件时才加载此配置:
@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 的粒度上。
这里的要求是仅在启用某个属性时才运行 consul 配置(来自您的 cmets 的tools.consul.enabled=true)
我们的想法是定义一组与 consul 相关的属性,而不是在默认的 application.yml 文件中,而是在其他地方,例如 consul-integration.properties 文件,并使用仅在 @ConditionOnProperty 为见了。
例子:
@Configuration
@ConditionalOnProperty(value="tools.consul.enabled", havingValue=true)
@PropertySources({
@PropertySource("classpath:consul-integration.properties)
})
public class ToolConsulSampleConfiguration {
}
【讨论】: