SpringBoot

SrpingBoot 给人的第一印象就是 简洁,易上手。它是自 Spring 而来为了简化我们开发的,而经历过了 Spring 中繁琐的配置文件,我确实很好奇它到底是怎么帮我们把 Spring 的配置给自动化的,所以现在来探究一下它的自动装配原理!

自动装配:

1. SpringBoot主程序一启动,就会开始加载自动配置类 xxxAutoConfiguration (),被@AutoConfiguration标注了的就是自动配置类;

那它又是在哪里加载的呢? 
  
  于是我先从主配置类上入手,一路追溯上面的注解,@SpringBootApplication  =>  @EnableAutoConfiguration  => @Import(AutoConfigurationImportSelector.class)
  ,最后在 AutoConfigurationImportSelector 类中找到了我们想要的结果,SpringBoot在这个类中,通过SpringFactoriesLoader.loadFactoryNames(),加载了
  SpringBoot-AutoConfiguration 包下的 META-INF/spring.factories文件,读取了里面的自动配置类。

java自动装箱有什么用 springboot自动装箱_加载

java自动装箱有什么用 springboot自动装箱_配置文件_02

java自动装箱有什么用 springboot自动装箱_java自动装箱有什么用_03

2. 然后每个自动配置类,他们上面都会有个 @ConditionOnXXX ,用于判断这个类的依赖,我们有没有导入进来;当我们导入了相关的依赖时, @ConditionOnXXX 判断通过,这个自动配置类就开始生效,开始往SpringBoot中注册它这个类的有特殊作用的bean!

3. 自动配置类开始生效,但它的特殊功能的bean,需要的属性是存储在它的一个对象成员 xxxProperties properties 中的,自动配置类通过这个对象成员变量中的属性,才能成功注册bean。于是它通过 @EnableConfigurationProperties 关联了对应的 xxxProperties 类。

java自动装箱有什么用 springboot自动装箱_自动装配_04

4. 而在 xxxProperties 类中,它又通过 @ConfigurationProperties 关联了配置文件中配置好了的对象属性值,通过这样的方式将属性初始!

java自动装箱有什么用 springboot自动装箱_java自动装箱有什么用_05

自动装配整个环节环环相扣,最终实现了SpringBoot的开箱即用!看完真的是愈发佩服人类的智慧!!