spring.factories文件的作用

2年前 (2022) 程序员胖胖胖虎阿
223 0 0

对于在maven中引用的其他外部包加入容器的过程,需要用到spring.factories。
首先
@SpringApplication注解标识在启动类上, 它是一个组合注解
点进去可以看到
spring.factories文件的作用

其中@EnableAutoConfiguration也就是开启自动装配, 继续跟踪@EnableAutoConfiguration注解, 它使用一个@Import 注解, 将一个类名为AutoConfigurationImportSelector注入到IOC容器中.
spring.factories文件的作用

这个AutoConfigurationImportSelector类很重要, 因为springboot项目启动时, 会调用它里面一个方法loadFactoryNames, 这个方法会扫描pom文件中引入的其他starter中的spring.factories文件, 具体的调用路径为:
1、调用selectImports()方法
spring.factories文件的作用
2、调用getAutoConfigurationEntry( )
spring.factories文件的作用
3、–>调用getCandidateConfigurations( )–>
spring.factories文件的作用

可以看到最后调用loadFactoryNames( )方法,这个方法的逻辑就是扫描pom文件中引入的其他starter中的spring.factories文件。

spring.factories文件内容示例如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration,\
  com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

spring.factories用键值对的方式记录了所有需要加入容器的类,EnableAutoConfigurationImportSelector的selectImports方法返回的类名,来自spring.factories文件内的配置信息,这些配置信息的key等于EnableAutoConfiguration,因为spring boot应用启动时使用了EnableAutoConfiguration注解,所以EnableAutoConfiguration注解通过import注解将EnableAutoConfigurationImportSelector类实例化,并且将其selectImports方法返回的类名实例化后注册到spring容器。

即spring.factories文件是帮助spring-boot项目包以外的bean(即在pom文件中添加依赖中的bean)注册到spring-boot项目的spring容器中。由于@ComponentScan注解只能扫描spring-boot项目包内的bean并注册到spring容器中,因此需要@EnableAutoConfiguration注解来注册项目包外的bean。而spring.factories文件,则是用来记录项目包外需要注册的bean类名。

版权声明:程序员胖胖胖虎阿 发表于 2022年11月1日 上午7:16。
转载请注明:spring.factories文件的作用 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...