使用@ConditionalOnProperty来控制配置注解@Configuration是否生效;
一、案例分析
1.不使用注解@ConditionalOnProperty,则配置类注解@Configuration生效;
2.当@ConditionalOnProperty中配置value属性,没有havingValue属性:
(1)如果application.yml配置了test.conditional,则配置类注解@Configuration生效,否则不生效。
@ConditionalOnProperty(value = "test.conditional")
test:
conditional: true
3.prefix + name相当于value属性(两者不可同时使用):
(1)如果application.yml配置了test.conditional则生效,否则不生效
@ConditionalOnProperty(prefix = "test", name = "conditional")
test:
conditional: true
4.name属性为一个数组,当要匹配多个值时:
(1)如果application.yml的配置与name属性中的值一一匹配则生效,否则不生效
@ConditionalOnProperty(prefix = "test", name = { "conditional", "name" })
test:
conditional: true
name: zdb
5.当matchIfMissing=true时:
(1)如果application.yml配置了test.conditional则生效(此时matchIfMissing可有可无),否则不生效
(2)如果application.yml啥都没配置则生效
6.加上havingValue属性:
当havingValue的值与application.yml文件中test.conditional的值一致时则生效,否则不生效
@ConditionalOnProperty(prefix = "test", name = "conditional", havingValue = "true")
test:
conditional: true
7.加上havingValue属性。name属性为数组时,如果application.yml文件中配置了相关属性且值都一致时则生效,否则不生效
@ConditionalOnProperty(prefix = "test", name = { "conditional", "name" }, havingValue = "zdb")
test:
conditional: true
name: zdb