業(yè)務(wù)場(chǎng)景
項(xiàng)目原先需要調(diào)用公司其他團(tuán)隊(duì)開(kāi)發(fā)的存儲(chǔ)服務(wù),現(xiàn)在需要在使用一套代碼的情況下根據(jù)配置,切換使用原來(lái)的存儲(chǔ)服務(wù)和自己開(kāi)發(fā)的存儲(chǔ)服務(wù)
實(shí)現(xiàn)
1.配置文件添加配置
新的方案的配置文件添加:
source=local2.新的實(shí)現(xiàn)類繼承舊的類,并在類上添加注解
@Conditional(LocalCondition.class),并且重寫(xiě)因?yàn)闃I(yè)務(wù)而需要調(diào)整的方法
LocalCondition類作用是判斷配置文件中source的值是否是local,是的話返回true,配合@Conditional注解使用,作用就是source的值是local時(shí),就把該類加載到容器中。
public class LocalCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String local = context.getEnvironment().getProperty(LocalUtil.LOCAL_FLAG_COFING);
return LocalUtil.LOCAL.equals(local);
}
}
- 3.舊的類添加注解
@Conditional(ServiceCondition.class)
ServiceCondition類略