当前位置: 首页 > article >正文

Spring配置文件初始化加载(一)

1.枚举

public enum TestEnum {
    type_01("01", "zeroTest01ServiceImpl"),
    type_02("02", "zeroTest02ServiceImpl"),
    type_03("03", "zeroTest03ServiceImpl");
    private String type;
    private String pathClass;
}

2.接口

public interface ZeroTestService {

    /**
     * 校验
     *
     * @param map
     */
    void checkData(Map<String, String> map);

    /**
     * 当前实现对应类型
     *
     * @return
     */
    String getType();
}

3.实现类

@Service
public class ZeroTest02ServiceImpl implements ZeroTestService {
    @Override
    public void checkData(Map<String, String> map) {

    }

    @Override
    public String getType() {
        return null;
    }
}


@Service
public class ZeroTest01ServiceImpl implements ZeroTestService {
    @Override
    public void checkData(Map<String, String> map) {

    }

    @Override
    public String getType() {
        return null;
    }
}

4.实现IOC容器

@Component
public class ZeroTestServiceFactory implements ApplicationContextAware {

    @Autowired
    private ApplicationContext applicationContext;

    public Map<String, ZeroTestService> serviceMap = new HashMap<>();

    public ZeroTestService getZeroTestService(String type) {
        return serviceMap.get(type);
    }

    @Override
    public void setApplicationContext(ApplicationContext context) throws BeansException {
        if (null == context) {
            context = applicationContext;
        }
        for (TestEnum testEnum : TestEnum.values()) {
            serviceMap.put(testEnum.getType(), (ZeroTestService) context.getBean(testEnum.getPathClass()));
        }
    }
}


http://www.kler.cn/a/383843.html

相关文章:

  • 这款神器,运维绝杀 !!!
  • git 提交代码流程
  • 泷羽sec学习打卡-shodan扫描1
  • Unity中可以使用图片或mov的透明的shader
  • C语言 循环高级
  • (没有跳过联网激活)导致使用微软账号激活电脑---修改为本地账户和英文名字
  • Redis学习:Redis可重入分布式锁、Redlock算法和底层源码分析
  • 如何用Python精确计算当前时间之前一年、一月和一天
  • golang分布式缓存项目 Day 1
  • rust编写的系统监测器
  • jvm学习笔记-轻量级锁内存模型
  • Vue2 与 Vue3 的区别
  • C++ -- 继承
  • day52 图论章节刷题Part04(110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长 )
  • promise的用法以及注意事项,看了这篇你就会了
  • 100种算法【Python版】第52篇——无损压缩之霍夫曼编码
  • 查看网路信息-ifconfig命令
  • Tomasulo算法介绍
  • 介绍一下memcpy(c基础)
  • 文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点?
  • 【Golang】区块链练习(一)
  • 2025天津市考8日报名,建议收藏好报名流程
  • 昆仑通态触摸屏学习路程
  • NFT Insider #154:The Sandbox Alpha 4 第四周开启,NBA Topshot NFT 销量激增至新高
  • WPF中的转换器
  • 机器学习—推理:做出预测(前向传播)