业务场景
项目原先需要调用公司其他团队开发的存储服务,现在需要在使用一套代码的情况下根据配置,切换使用原来的存储服务和自己开发的存储服务
实现
-
1.配置文件添加配置
新的方案的配置文件添加:
source=local -
2.新的实现类继承旧的类,并在类上添加注解
@Conditional(LocalCondition.class)
,并且重写因为业务而需要调整的方法
LocalCondition类作用是判断配置文件中source的值是否是local,是的话返回true,配合@Conditional注解使用,作用就是source的值是local时,就把该类加载到容器中。
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类略
网友评论