【SpringBoot】03 自动装配原理探索

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)获取候选配置

原文地址:https://www.cnblogs.com/mindzone/p/12849714.html