IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Boot自动配置原理 -> 正文阅读

[Java知识库]Spring Boot自动配置原理


一、SpringBoot概述

SpringBoot是搭建应用的手脚架,由Spring公司的核心团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突等问题得到了很好的解决

官方学习参考文档:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/

SpringBoot的特点:
1、 快速创建独立的Spring应用
2、 提供固定的启动器依赖(启动器即Spring Boot提供的一个jar包)去简化组件配置,通过自己设置参数(.properties或.yml的配置文件),实现快速使用的效果
3、 提供了一些大型项目中常见的非功能性特性,如内嵌服务器(如tomcat、jetty、undertow)、安全、指标,健康检测、外部化配置等
4、 自动配置Spring和其它有需要的第三方依赖,无需 XML 配置

二、SpringBoot:启动器&自动配置

Spring Boot的核心:启动器&自动配置原理
在这里插入图片描述

总结:springBoot在启动过程当中会加载META-INF/spring.factories文件,文件中包含了所有的自动配置类,自动配置类上有一个条件注解@ConditionalOnClass,必须满足这个条件注解,配置类才生效。只要加入相关的启动器依赖,条件注解就会生效,配置类就生效了

官方启动器介绍: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/using-boot-build-systems.html#using-boot-starter

Spring Boot启动器的作用
● 配置一个启动器它会把整合这个框架或模块的依赖全部导入
● 每一个启动器都有一个自动配置类,实现自动整合Spring
● 每一个启动器都有一个配置属性类,提供了默认整合的属性配置

自动配置原理

1. 首先来自启动类的main方法

特别的两个地方:
注解: @SpringBootApplication 【重点】
run方法: SpringApplication.run() 运行spring应用(创建spring容器)

2. @SpringBootApplication注解

相当于以下三个注解的组合:
@SpringBootConfiguration 【作用: 定义配置类】
@EnableAutoConfiguration 【作用: 启用自动配置】
@ComponentScan 【作用: 组件扫描】

注解说明
注解@EnableAutoConfiguration,告诉SpringBoot基于你所添加的依赖,去“猜测”你想要如何配置Spring。比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcat、SpringMVC的依赖。此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!
注解@ComponentScan,配置组件扫描的指令。提供了类似与context:component-scan
标签的作用通过basePackageClasses或者basePackages属性来指定要扫描的包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包
在这里插入图片描述

3. 自动配置实现流程

SpringApplication在运行Spring应用时,是通过SpringFactoriesLoader的loadSpringFactories()方法,初始化Spring工厂实例。
在这里插入图片描述
META-INF/spring.factories工厂配置文件
在这里插入图片描述
加载该文件,判断对应的启动器是否导入,如果导入就创建实例,自动注入默认属性
在这里插入图片描述
这个key所对应的值,就是所有的自动配置类,可以在当前的jar包中找到这些自动配置类:
在这里插入图片描述
每个包都有一个XxxAutoConfiguration配置类,都是一个基于纯注解的配置类,是各种框架整合的代码
在这里插入图片描述
该自动配置类,如果有默认属性,在该包下就会有一个XxxProperties属性类:
在这里插入图片描述

配置属性介绍
Spring Boot为所有的启动器提供了默认的属性配置,如果我们需要修改就必须要知道哪些属性是属于哪些启动器的默认配置。

官方属性配置介绍: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/htmlsingle/#appendix

配置属性流程
从官方文档中找对应的属性,是件很麻烦的事情,因为属性太多,也不知道到底是哪个自动配置类的属性。
配置步骤:
第一步:配置一个自动配置类的属性,先到spring-boot-autoconfigure-2.1.6.RELEASE.jar找到对应的模块
在这里插入图片描述
第二步:如果该自动配置类有可以配置的属性,那么对应的整合模块中一定有一个XxxProperties属性类,在里面找可以配置的属性
在这里插入图片描述
第三步:在resources目录下的application.properties或application.yml文件里面可以修改 XxxProperties类中默认的属性
在这里插入图片描述

小结

Spring Boot自动配置原理:
1、 SpringApplication会寻找 META-INF/spring.factories 文件,读取其中以EnableAutoConfiguration 为key的所有类的名称, 这些类就是提前写好的自动配置类
2、 这些类都声明了@Configuration注解,并且通过@Bean注解提前配置了我们所需要的一切实例,完成自动配置
3、 这些配置类不一定全部生效,因为有@ConditionalOn注解,满足一定条件才会生效。(类存在条件)
4、 我们可以通过配置application.yml或application.properties文件,来覆盖自动配置中的属性

Spring Boot开发两个重点:
1、 找Spring Boot提供的starter启动器
2、 配置属性覆盖starter启动器中自动配置类的默认属性


总结

springBoot在启动过程当中会加载META-INF/spring.factories文件,文件中包含了所有的自动配置类,自动配置类上有一个条件注解@ConditionalOnClass,必须满足这个条件注解,配置类才生效。只要加入相关的启动器依赖,条件注解就会生效,配置类就生效了

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:01:36  更:2021-08-03 11:04:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 0:20:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码