springboot源码分析——SPI扩展机制

 

  springboot最重要的特性就是自动配置,许多功能不需要手动开启,会自动帮助程序员开启,如果想扩展某些

第三方组件的功能,例如mybatis,只需要配置依赖,就可以了,这其中都是需要SPI支持实现的,下面我们从源码

层面看看springboot如何通过spi机制实现自动配置的。

一:加载所有工程中META-INF/spring.factories文件中的配置

 创建SpringApplication对象:

 

 

 

 

 

 

 

 

 

 

 

 

我们随便看一个工程的目录:spring-boot-autoconfigure 工程下META-INF 目录下的spring.factories文件的内容, 配置类似map  ,key为某一项,value为实现集合

 

 

这就是Spi的加载机制,可以通过配置的方式实现和业务代码的解耦,需要增加时直接配置到文件内。

这一步是在容器启动的时候,加载所有的factoryname的值到缓存,包括自动配置的。

 

二:看一下自动配置是如何寻找并注册的

看一下这个注解@SpringBootApplication

 

 

 

 

 

 

看一下这个类的内容:类里面有获取自动配置的方法getAutoConfigrationEntry

 

 

 

 

 

 就是从上一步缓存result中查询所有的EnableAutoConfiguration的value集合,

这一节主要分析spi机制加载spring.factories的配置项,下一节我们来分析自动配置的加载流程

 

posted @ 2020-07-10 18:39  warrior1234  阅读(3611)  评论(0编辑  收藏  举报