SpringFactoriesLoader机制实例详解-创新互联
一、SpringFactoriesLoader 介绍
1.1 SpringFactoriesLoader 简介
SpringFactoriesLoader 工厂加载机制是 Spring 内部提供的一个约定俗成的加载方式,与 java spi 类似,只需要在模块的 META-INF/spring.factories 文件中,以 Properties 类型(即 key-value 形式)配置,就可以将相应的实现类注入 Spirng 容器中。
Properties 类型格式:
key:是全限定名(抽象类|接口)
value:是实现,多个实现通过 **逗号** 进行分隔
1.2 SpringFactoriesLoader 常用方法
loadFactoryNames
读取 classpath上 所有的 jar 包中的所有 META-INF/spring.factories属 性文件,找出其中定义的匹配类型 factoryClass 的工厂类,然后并返回这些工厂类的名字列表,注意是包含包名的全限定名。
loadFactories
读取 classpath 上所有的jar包中的所有 META-INF/spring.factories 属性文件,找出其中定义的匹配类型 factoryClass 的工厂类,然后创建每个工厂类的对象/实例,并返回这些工厂类对象/实例的列表。
1.3 loadFactories 流程图
二、SpringFactoriesLoader 源码解析
2.1 loadFactoryNames 解析
public static ListloadFactoryNames(Class<?> factoryType, @Nullable ClassLoader classLoader) { // 获取包含包名的工厂类名称 String factoryTypeName = factoryType.getName(); // 获取所有配置在 META-INF/spring.factories 文件的值 // 然后获取指定类的实现类名列表 return loadSpringFactories(classLoader).getOrDefault(factoryTypeName, Collections.emptyList()); }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻标题:SpringFactoriesLoader机制实例详解-创新互联
分享地址:http://myzitong.com/article/dcihop.html