SpringBoot自动装配源码分析

早期的Spring项目需要添加需要配置繁琐的xml,比如MVC、事务、数据库连接等繁琐的配置。Spring Boot的出现就无需这些繁琐的配置,因为Spring Boot基于约定大于配置的理念,在项目启动时候,将约定的配置类自动配置到IOC容器里。这些都因为Spring Boot有自动配置的特性。

SpringBoot自动装配源码分析_第1张图片

Sping Boot 如何实现自动配置

Spring Boot都需要创建一个mian启动类,而启动类都含有@SpringBootApplication注解,从启动类,一步步探索源码。

@SpringBootApplication注解

Spring Boot 启动类上都有一个 @SpringBootApplication注解:

SpringBoot自动装配源码分析_第2张图片

@EnableAutoConfiguration注解

@SpringBootApplication 里面有 @EnableAutoConfiguration 的注解:

SpringBoot自动装配源码分析_第3张图片 @Import注解

@EnableAutoConfiguration 里面有 @Import 的注解:

SpringBoot自动装配源码分析_第4张图片

AutoConfigurationImportSelector类

@Import注解会导入AutoConfigurationImportSelector类:

SpringBoot自动装配源码分析_第5张图片

selectImports()方法

AutoConfigurationImportSelector类找到 selectImports 方法,里面有getAutoConfigurationEntry方法:

SpringFactoriesLoader.loadFactoryNames() 方法

getAutoConfigurationEntry方法通过SpringFactoriesLoader.loadFactoryNames() 扫描所有含有META-INF/spring.factoriesjar包:

SpringBoot自动装配源码分析_第6张图片

SpringBoot自动装配源码分析_第7张图片

SpringBoot自动装配源码分析_第8张图片

spring-boot-autoconfigure-xxx.jar项目包含META-INF/spring.factories文件,spring.factories是一个键值对的形式,扫描该文件下@EnableAutoConfiguration对应类:

SpringBoot自动装配源码分析_第9张图片

自动装配流程总结

  • Spring Boot自动配置原理
    • 1、@EnableAutoConfiguration注解导入AutoConfigurationImportSelector类。
    • 2、执行selectImports方法调用SpringFactoriesLoader.loadFactoryNames()扫描所有jar下面的对应的META-INF/spring.factories文件.
    • 3、限定为@EnableAutoConfiguration对应的value,将这些装配条件的装配到IOC容器中。
  • 自动装配简单来说就是自动将第三方的组件的bean装载到IOC容器内,不需要再去写bean相关的配置,符合约定大于配置理念。
  • Spring Boot基于约定大于配置的理念,配置如果没有额外的配置的话,就给按照默认的配置使用约定的默认值,按照约定配置到IOC容器中,无需开发人员手动添加配置,加快开发效率。

你可能感兴趣的:(spring,java,后端)