根据配置加载实现类@Conditional

业务场景

项目原先需要调用公司其他团队开发的存储服务,现在需要在使用一套代码的情况下根据配置,切换使用原来的存储服务和自己开发的存储服务

实现

  • 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类略

你可能感兴趣的:(根据配置加载实现类@Conditional)