在之前我就一直有一个想法,就是有的bean我不想注入,比如说有的时候用的是A的bean,可能换了一个不同的系统可能要用B的bean,我可不可以自己去配置什么时候注入A什么时候注入B, 而不是我都注入,用到那个用哪个。实际@Conditional@ConditionalOnProperty这一类的注解可以帮助我们,这里我们选择@ConditionalOnProperty来做。
我们知道Spring有一个注解@Conditional,它的作用是按照一定的条件进行判断,配合@Bean注解,可以再条件规则的结果来判断是否注入这个Bean。SpringBoot在@Conditional基础上搞出来好几个注解,@ConditionalOnProperty就是一个方便我们使用,看名字就知道通过读propertise文件来获取对应的属性进行条件判断。
以下面代码来作为例子
@Bean
@ConditionalOnProperty(prefix = "zp.
appearance", name = "is",havingValue = “handsome”)
public RedisClient configLxzlClient() {
return new ZpIsHandsome();
}
对应的我在属性文件proertise配置对应的下面的一行
zp.appearance.is: handsome
prefix 前缀是用来匹配对应的属性
name是和prefix一起拼接在一起来找到具体的属性
value就是对应的属性的值,如果匹配到(就是你设置的propertise的值,和你在@ConditionalOnProperty上设置havingVlaue匹配)
还是以上面作为例子
zp.appearance.is对应的值是 handsome和@ConditionalOnProperty设置的havingValue是一致的,则加载Bean注入。