根据配置加载实现类@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类略

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容