spring.factories

一、前言

上一篇 《spring-boot-devtools配置和原理》 讲到当我们要去了解一个Jar如何被调用,会去查阅spring.factories这个配置文件。spring.factories配置机制类似于Java SPI,META-INF/spring.factories 文件中配置了接口实现类名称,然后springboot在启动时候扫描该配置文件并实例化配置文件中的Bean. SPI可以参考《SPI机制详解》这篇文章。

二、spring.factories简单使用

1、创建一个测试类

注:在实例化的时候输出日志

2、META-INFO/spring.factories

3、SpringBoot启动时

注:可以看出TestBean在SpringBoot启动时进行了实例化。

三、Spring.factories原理

通常将Bean注入到Spring容器中有多种方法,比如@Autowire、@import注解,而Spring.factoires的意义在于可以将第三方Jar包中的Bean有选择地注入到容器中。

SpringFactoriesLoader用于将类注入到Spring容器,关键代码如下:

注:通过【1】的代码将META-INFO下factories实现类定义名称解析出来,通过【2】的代码加载到容器中。

注:【1】获取META-INFO下spring.factories文件,【2】遍历文件中key/value的定义(支持一个接口定义多个实现)加载到Map<String,List<String>>.

在Springboot很多包中都可以找到spring.factories,比如spring-boot-test。

在日常工作中,我们要实现SDK给别人用就可以使用Factories机制,这样就可以让使用者只需要很少甚至不需要配置就可以使用我们提供的Jar包。

注:下一篇讲Springboot的starte机制。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-28 13:40:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-28 13:40:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-28 13:40:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-28 13:40:01       20 阅读

热门阅读

  1. Kubernetes中的Pod处于Pending状态的原因

    2024-03-28 13:40:01       15 阅读
  2. DevOps迈向标准化,平台工程让开发运维更轻松

    2024-03-28 13:40:01       16 阅读
  3. 2024年腾讯云服务器价格表,2核4G5M带宽165元一年

    2024-03-28 13:40:01       39 阅读
  4. 八道Python入门级题目及答案详解

    2024-03-28 13:40:01       17 阅读
  5. springboot+mybatis项目集成p6spy输出格式化sql日志

    2024-03-28 13:40:01       15 阅读
  6. 鸿蒙开发 TypeScript 基础语法

    2024-03-28 13:40:01       21 阅读
  7. 哈工大 sse C语言 困难

    2024-03-28 13:40:01       18 阅读
  8. Linux-arm指令集和arm架构

    2024-03-28 13:40:01       18 阅读
  9. 【数学】莫比乌斯反演(以 P2522 和 P3327 为例)

    2024-03-28 13:40:01       20 阅读
  10. 自练题目leetcode

    2024-03-28 13:40:01       21 阅读