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

【SpringBoot】03 自动装配原理探索的更多相关文章

  1. 【springboot】自动装配原理

    摘自:https://mp.weixin.qq.com/s/ZxY_AiJ1m3z1kH6juh2XHw 前言 Spring翻译为中文是"春天",的确,在某段时间内,它给Java开 ...

  2. SpringBoot启动流程分析(五):SpringBoot自动装配原理实现

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  3. SpringBoot自动装配原理解析

    本文包含:SpringBoot的自动配置原理及如何自定义SpringBootStar等 我们知道,在使用SpringBoot的时候,我们只需要如下方式即可直接启动一个Web程序: @SpringBoo ...

  4. Eureka 系列(03)Spring Cloud 自动装配原理

    Eureka 系列(03)Spring Cloud 自动装配原理 [TOC] 0. Spring Cloud 系列目录 - Eureka 篇 本文主要是分析 Spring Cloud 是如何整合 Eu ...

  5. springboot自动装配原理

    最近开始学习spring源码,看各种文章的时候看到了springboot自动装配实现原理.用自己的话简单概括下. 首先打开一个基本的springboot项目,点进去@SpringBootApplica ...

  6. springboot自动装配原理,写一个自己的start

    springboot自动装配原理 第一次使用springboot的时候,都感觉很神奇.只要加入一个maven的依赖,写几行配置,就能注入redisTemple,rabbitmqTemple等对象. 这 ...

  7. SpringBoot | 2.1 SpringBoot自动装配原理

    @ 目录 前言 1. 引入配置文件与配置绑定 @ImportResource @ConfigurationProperties 1.1 @ConfigurationProperties + @Enab ...

  8. 【Springboot】Springboot自动装配原理

    1.核心注解就是 EnableAutoConfiguration  该注解会激活SpringBoot的自动装配功能: 代码如下: @Target(ElementType.TYPE) @Retentio ...

  9. 深入理解SpringBoot之自动装配

    SpringBoot的自动装配是拆箱即用的基础,也是微服务化的前提.其实它并不那么神秘,我在这之前已经写过最基本的实现了,大家可以参考这篇文章.这次主要的议题是,来看看它是怎么样实现的,我们透过源代码 ...

  10. Spring Boot系列(二):Spring Boot自动装配原理解析

    一.Spring Boot整合第三方组件(Redis为例) 1.加依赖 <!--redis--> <dependency> <groupId>org.springf ...

随机推荐

  1. 异步长传文件插件 jquery validate 前端验证

    异步文件上传插件:http://fex.baidu.com/webuploader/getting-started.html html5 FormData 可以实现无刷新上传  有空了解 FileRe ...

  2. 对pta的总结_1

    前言 这三次pta难度在不断上升的同时,要求我们线上慕课+自主学习来了解更多的java中的各种方法,如:正则表达式 List Map等.与此同时要求我们展开尝试并熟练类的构造,类的引用,链表的基本运用 ...

  3. Java8中LocalDateTime与时间戳timestamp的互相转换及ChronoUnit工具类

    Java8中LocalDateTime与时间戳timestamp的互相转换及ChronoUnit工具类import java.time.*;import java.time.format.DateTi ...

  4. 警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除

    警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除 import org.apache.commons.codec.binary.Base64; public class ...

  5. Jmeter自动录制脚本

    1.Jmeter配置 1.1新增一个线程组 1.2Jmeter中添加HTTP代理 1.3配置HTTP代理服务器 修改端口 修改Target Cintroller(目标控制器) 修改Grouping(分 ...

  6. SVG <pattern> 标签的用法和应用场景

    通过使用 <pattern> 标签,可以在 SVG 图像内部定义可重复使用的任意图案.这些图案可以通过 fill 属性或 stroke 属性进行引用. 使用场景 例如我们要在 <sv ...

  7. Golang线程池gpool

    背景 golang中使用并发要考虑很多问题,如控制并发量.等待Goroutine执行完毕等. 看下面一段代码: var wg sync.WaitGroup count := 10 wg.Add(cou ...

  8. 35个Redis企业级性能优化点与解决方案

    Redis作为企业级应用中广泛使用的高性能键值存储数据库,其性能优化是一个复杂且多面的话题.以下是V 哥整理的一些关键的优化点和相应的解决方案,提供给兄弟们参考. Redis的性能优化涉及到硬件选择. ...

  9. Linux 获取 指定目录 下的 最大子目录深度

    命令 function getDirMaxDepth() { folder_name="$1" if [ ! -d "$folder_name" ];then ...

  10. 在WPF中使用WriteableBitmap对接工业相机及常用操作

    写作背景 写这篇文章主要是因为工业相机(海康.大恒等)提供的.NET开发文档和示例程序都是用WinForm项目来说明举例的,而在WPF项目中对图像的使用和处理与在WinForm项目中有很大不同.在Wi ...