关于策略模式的几种实现
1.使用byname方案(不推荐)
缺点:还是要去源代码修改名称
2.有选择的将类加入容器或者通过@Qualifier(“参数”)参数的修改来进行修改
3.@Primary优先注解
条件注解 @Conditional
我们可以使用调节注解解决策略模式的变化,当然它不仅仅是解决策略模式的变化
当满足某种条件的时候,加入bean到IOC容器中,当不满足某种条件的时候,这个bean不会加入到IOC容器中。
自定义条件注解
@Conditional + @Condition
通过条件注解,来判断是否需要将对象放置到容器中(基本使用)
matchs方法书写业务逻辑并返回boolean值,确认是否加入容器
在HeroConfiguration中
这样就能做到使用条件注解,来确认对象是否应该加入容器中!
代码链接: feat: 条件注解初体验
使用Condition与ConditionContext的参数来进行条件注入
上面的例子,变化最好隔离配置文件,我们可以进行@Conditional + 配置文件,进行条件注解的使用
首先我们可以看一下Condition这个接口的matches方法的参数conditionContext
�
我们可以使用getEnvironment方法,获取环境变量中的参数
这样就可以做到使用配置文件来进行条件注入
代码链接:feat: 使用Condition与ConditionContext的参数来进行条件注入
内置成品条件组件注解@ConditionalOnProperty
@ConditionalOnProperty(value=”环境变量的key”,havingValue=”对应key的value”)
我们可以抛弃自定义条件注解来进行成品注解(@ConditionalOnProperty)进行条件注入
如果没有读取到value的key值,就打上matchIfMissing = true的Bean加入到容器内部(默认值作用)
@ConditionalOnBean注解(11.1-7)使用
还未看