早期的Spring
项目需要添加需要配置繁琐的xml
,比如MVC
、事务、数据库连接等繁琐的配置。Spring Boot
的出现就无需这些繁琐的配置,因为Spring Boot
基于约定大于配置的理念,在项目启动时候,将约定的配置类自动配置到IOC
容器里。这些都因为Spring Boot
有自动配置的特性。
Sping Boot 如何实现自动配置
Spring Boot
都需要创建一个mian
启动类,而启动类都含有@SpringBootApplication
注解,从启动类,一步步探索源码。
@SpringBootApplication注解
Spring Boot
启动类上都有一个 @SpringBootApplication
注解:
@EnableAutoConfiguration注解
@SpringBootApplication
里面有 @EnableAutoConfiguration
的注解:
@Import注解
@EnableAutoConfiguration
里面有 @Import
的注解:
AutoConfigurationImportSelector类
@Import
注解会导入AutoConfigurationImportSelector
类:
selectImports()方法
AutoConfigurationImportSelector
类找到 selectImports
方法,里面有getAutoConfigurationEntry
方法:
SpringFactoriesLoader.loadFactoryNames() 方法
getAutoConfigurationEntry
方法通过SpringFactoriesLoader.loadFactoryNames()
扫描所有含有META-INF/spring.factories
的jar
包:
spring-boot-autoconfigure-xxx.jar
项目包含META-INF/spring.factories
文件,spring.factories
是一个键值对的形式,扫描该文件下@EnableAutoConfiguration
对应类:
自动装配流程总结
Spring Boot
自动配置原理- 1、
@EnableAutoConfiguration
注解导入AutoConfigurationImportSelector
类。 - 2、执行
selectImports
方法调用SpringFactoriesLoader.loadFactoryNames()
扫描所有jar
下面的对应的META-INF/spring.factories
文件. - 3、限定为
@EnableAutoConfiguration
对应的value
,将这些装配条件的装配到IOC
容器中。
- 1、
- 自动装配简单来说就是自动将第三方的组件的
bean
装载到IOC
容器内,不需要再去写bean
相关的配置,符合约定大于配置理念。 Spring Boot
基于约定大于配置的理念,配置如果没有额外的配置的话,就给按照默认的配置使用约定的默认值,按照约定配置到IOC
容器中,无需开发人员手动添加配置,加快开发效率。