SpringBoot03 自动装配原理探索

Posted Silent1376

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot03 自动装配原理探索相关的知识,希望对你有一定的参考价值。

SpringBoot的依赖探索

首先是一个父级依赖管理的pom.xml

 

【Ctrl + 左键点击】访问进去之后还有父级的父级

 

到最后才是我们的真正的顶级父类Pom.xml

 

我们当前的父级坐标

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

第二级坐标

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.7.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
  </parent>

最后才是Boot依赖

 

顶级父类管理了所有依赖的版本,

实际导入依赖只需要声明具体的包即可

 

次级目录负责了资源导出过滤

 

启动器:

启动被拆分成各个单元模块

回想SSM的启动

- Main写类实现

- Test写单元测试类

- 服务启动Tomcat

 

主程序:

@SpringBootApplication 标注这个类是一个SpringBoot的应用

就跟MVC的@Component差不多,注册

 

我们可以点击查看这个注解类

 

 

@SpringBootConfiguration

又是由一个@Configuration来配置

 

追到最后就是一个@Component注解,

 

也就是说SpringBoot的本质还是一个Spring,

但是是一个纯注解的Spring【不再是繁琐的XML配置了】

 

@EnableAutoConfiguration 顾名思义【开启自动配置】

 

@AutoConfigurationPackage

自动配置包

被@Import({Registrar.class}) 注解,也就是包注册扫描

 

 

 


 

看不下去了,总而言之就是通过这些注解对整个工程进行了一个

地毯式的注册配置,全部加载进了Properties,配合启动器完成运行

我们要做的就是配置启动器

https://www.bilibili.com/video/BV1PE411i7CV?t=2222&p=6

 

2020.08.17更新:

在SpringBoot自动配置这个Jar包中,提供了一个Spring工厂配置文件

里面的信息就和properties一样,有键和值组成,分为了这些:

# Initializers 初始化加载器

# Application Listeners 应用监听器

# Auto Configuration Import Listeners 自动配置导入 监听器

# Auto Configuration Import Filters 自动配置导入 过滤器

# Auto Configure 自动配置

# Failure analyzers 故障分析器

# Template availability providers 可用的模版供应者

重点部分在自动配置的值上面,一共配置了126个值,即表示了SpringBoot具有126个资源的自动配置

这也就表示其实和Spring读取XML配置信息创建Bean实例是一个道理

但是加载这些自动配置类资源需要提供SpringBoot对应的启动器starter,自动装配才会生效

 

 


 

在尚硅谷的教程细谈:

https://www.bilibili.com/video/BV1gW411W76m?t=190&p=19

官方文档的配置文件参数详细说名

https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#common-application-properties

头部导航锚标签连接位置传送

 

自动装配原理:

- SpringBoot启动时加载主配置类,开启了自动配置功能@EnableAutoConfiguration

- @EnableAutoConiguration作用:

  1、利用EnableAutoConigurationImportSelector给容器导入组件

  2、可以查看SelectImport方法的内容

  3、List<String>Configurations = getCandicateConfiguration(annotationMetaData,attribute)获取候选配置

 

以上是关于SpringBoot03 自动装配原理探索的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 自动装配的实现原理和骚操作,不同版本实现细节调整,debug 到裂开......

SpringBoot自动装配原理详细讲解(清楚 明白)

SpringBoot自动装配原理详细讲解(清楚 明白)

spring boot自动装配原理

SpringBoot学习探究Springboot自动装配

SpringBoot自动装配原理