浅谈spring.factories文件的作用
对于在maven中引用的其他外部包加入容器的过程,需要用到spring.factories。
spring.factories文件是Spring Boot自动配置的核心文件之一,它的作用是将各种自动配置类与对应的配置类集中在一起,方便Spring Boot自动装配。在Spring Boot启动时,它会扫描classpath下所有的spring.factories文件,加载其中的自动配置类,并将它们注入到Spring ApplicationContext中,使得项目能够自动运行。该文件的格式为键值对,键是自动配置类的全限定名,值是该自动配置类所对应的配置类的全限定名。
首先@SpringApplication注解标识在启动类上, 它是一个组合注解点进去可以看到

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

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

2、调用getAutoConfigurationEntry( )

3、–>调用getCandidateConfigurations( )–>

可以看到最后调用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类名。
到此这篇关于浅谈spring.factories文件的作用的文章就介绍到这了,更多相关spring.factories作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot+vue+elementsUI实现分角色注册登录界面功能
这篇文章主要给大家介绍了关于springboot+vue+elementsUI实现分角色注册登录界面功能的相关资料,Spring Boot和Vue.js是两个非常流行的开源框架,可以用来构建Web应用程序,需要的朋友可以参考下2023-07-07
SpringBoot配置多个数据源超简单步骤(连接多个数据库)
公司项目有连接多个不同数据库的需求,特研究了一下,根据网上的资料,这篇文章主要给大家介绍了关于SpringBoot配置多个数据源(连接多个数据库)的相关资料,需要的朋友可以参考下2024-05-05
Springboot整合mybatis-plus使用pageHelper进行分页(使用步骤)
PageHelper是一个MyBatis分页插件,可以方便地实现数据库查询结果的分页功能,在Maven或Gradle项目中引入依赖,并在配置文件中进行配置,本文给大家介绍Springboot整合mybatis-plus使用pageHelper进行分页,感兴趣的朋友跟随小编一起看看吧2024-11-11


最新评论