如何在条件属性上编写consul配置类,我已经完成并使用属性进行了测试,
但是要编写配置类,并且该配置应该在条件下加载。
如何在条件属性上编写consul配置类,我已经完成并使用属性进行了测试,
但是要编写配置类,并且该配置应该在条件下加载。
如果我的问题是正确的,那么您想创建一个配置类,但仅在满足某些条件时才加载此配置:
@Configuration
public class MyConfiguration {
@Bean
public ??? myBean() {
....
}
}
在这种情况下,您应该使用@Conditional
Spring 4 首先附带的注解。
有很多@Conditional
类似的注释,你应该只看你需要的一个。
如果还不够,您甚至可以推出自己的条件逻辑。由于问题中没有直接询问,因此我将仅提供一个链接(众多文章之一)来说明如何做到这一点。
所以你可以去,例如:
@Configuration
@ConditionalOnProperty(value="my.consul.integration.enabled", havingValue = "true")
public class MyConfiguration {
@Bean
public ??? myBean() {
....
}
}
您还可以将条件逻辑放在单个 bean 的粒度上。
这里的要求是仅在启用某个属性时才运行领事配置(tools.consul.enabled=true
来自您的评论)
这个想法是定义一组与 consul 相关的属性,而不是在默认application.yml
文件中,而是在其他地方,例如consul-integration.properties
文件,并读取这个文件,配置只有在满足 a 时才会打开@ConditionOnProperty
。
例子:
@Configuration
@ConditionalOnProperty(value="tools.consul.enabled", havingValue=true)
@PropertySources({
@PropertySource("classpath:consul-integration.properties)
})
public class ToolConsulSampleConfiguration {
}