Spring Boot(四):Spring Boot启动原理分析
文章目录
Spring Boot启动原理分析
一、依赖导入原理
二、Spring Boot包扫描原理
三、Spring Boot自动配置原理
Spring Boot启动原理分析
一、依赖导入原理
父项目版本控制
ctrl + 点击spring-boot-starter-parent进入
继续点击,进入spring-boot-dependencies
这里管理着springboot中所有依赖的版本,是一个版本控制中心,导入依赖如果不写版本就用这里的版本。
spring-boot-starter-web也就是web启动器,导入和很多web的依赖。
二、Spring Boot包扫描原理
点击进入@SpringBootApplication注解
点击进入@SpringBootConfiguration注解
@SpringBootConfiguration上面有一个Configuration表示这是一个配置类
配置类上面有@Component说明也是容器中的一个组件
接着我们再回到SpringBootApplication.class文件的@EnableAutoConfiguration注释,点击进入。
@EnableAutoConfiguration 启用自动配置功能
springboot中没有做任何配置,springboot自动帮助我们配置,但是要通过该注解才能生效。
点击 @AutoConfigurationPackage(自动配置包)进入分析
@Import(AutoConfigurationPackages.Registrar.class) 导入AutoConfigurationPackages.Registrar类
@Import是spring的底层注解,给容器导入一个组件
通过debug进行启动
然后再这里右击计算
输入评估表达式:
new PackageImports(metadata).getPackageNames();
计算结果:
将配置类@SpringBootApplication标注的类所在包及下面所有子包里的所有组件扫描到spring容器。
三、Spring Boot自动配置原理
点击@SpringBootApplication,再点击@EnableAutoConfiguration进入类文件。
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
给容器中导入一些组件的选择器。
点击进入AutoConfigurationImportSelector.class文件,可以看到getCandidateConfigurations方法。
启动debug对方法进行断点调试,可以看到配置数据。
这些自动配置类给我们当前项目的场景提供了一些组件和配置,有了自动配置就免除类手动编写配置文件,注入等等功能。
该jar包提供一系列的配置类,替换掉了我们的XML配置信息。
默认加载如下配置文件
对于Spring Boot的启动分析简单到这里,有兴趣可以按照上述操作进行源代码详细分析。
-
Spring Boot(四):Spring Boot启动原理分析相关推荐
- 4、Eureka 源码解析 之 Eureka Client 启动原理分析
在前面的一篇文章 3.Eureka 源码解析 之 Eureka Server 启动原理分析当中我们分析了一下 Eureka Server 的启动.在集群环境下 Eureka Server 相互之前需要 ...
- spring boot应用启动原理分析
spring boot quick start 在spring boot 里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个W ...
- 实战:Spring Boot源码解读与原理分析
承载着作者的厚望,掘金爆火小册同名读物<Spring Boot源码解读与原理剖析>正式出书! 本书前身是掘金社区销量TOP的小册--<Spring Boot源码解读与原理剖析> ...
- Alian解读SpringBoot 2.6.0 源码(四):启动流程分析之应用环境准备
目录 一.背景 1.1.run方法整体流程 1.2.本文解读范围 二.应用环境准备 2.1.准备环境的整体流程 2.2.创建环境 2.3.配置环境 2.3.1.注册默认的转换器.格式化组件 2.3.1 ...
- Android 系统性能优化(21)---App启动原理分析及启动时间优化
一.启动原理解析 Android是基于Linux内核的,当手机启动,加载完Linux内核后,会由Linux系统的init祖先进程fork出Zygote进程,所有的Android应用程序进程以及系统服务 ...
- spring源码阅读--aop实现原理分析
aop实现原理简介 首先我们都知道aop的基本原理就是动态代理思想,在设计模式之代理模式中有介绍过这两种动态代理的使用与基本原理,再次不再叙述. 这里分析的是,在spring中是如何基于动态代理的思想 ...
- Spring Security(四) —— 核心过滤器源码分析
摘要: 原创出处 https://www.cnkirito.moe/spring-security-4/ 「老徐」欢迎转载,保留摘要,谢谢! 4 过滤器详解 前面的部分,我们关注了Spring Sec ...
- Spring Cloud Gateway 过滤器执行顺序原理分析
过滤器类型 GlobalFilter:全局过滤器,对所有路由生效.通过实现GlobalFilter接口创建 GatewayFilter:网关过滤器,也可以说是局部过滤器.自定义过滤器,只对配置了此过滤 ...
- Spring事务管理 | 数据库连接池流程原理分析
最新文章
- java实验报告 05 类与_java程序设计类与方法-java实验报告
- 为什么读博士以及有什么意义
- 手把手带你写一个JavaScript类型判断小工具
- 2018java多线程面试题_2018年最全Java面试通关秘籍汇总集!
- 编译wxWidgets
- 记:使用IScroll.js 开发picker日历组件遇到的问题及经验总结
- 基于SURF特征的目标检测
- 手机网络游戏SDK集成指南
- Linux例行性工作排程 (crontab)
- 如何去除微信小程序 wxParse 解析富文本图片间隙问题
- 什么是负载均衡器 负载均衡器的功能
- 魔兽争霸lostTemple地图
- 《工业控制系统信息安全防护指南》产品措施匹配表
- 1698无法登录mysql服务器_解决MySql ERROR 1698 (28000) 错误:Access denied for user 'root'@'localhost'...
- 小米组织架构调整成立技术委员会 强化技术引领 增强互联网成色
- 14WPF---关键帧动画
- nginx 服务器重启命令 关闭
- 12Cr2Mo1R(H)化学成分
- sql server 入门篇
- DS18B20 Proteus
热门文章
- Windows server 2008 DNS安装与配置
- activitygroup内子activity无法填满页面的解决办法
- python执行chromedriver闪退_python自动化测试时,chrome浏览器启动后闪退?
- Photoshop设计网页布局
- 《那些年啊,那些事——一个程序员的奋斗史》——27
- 奇偶校验码c语言源代码,求助 奇偶校验的C语言编程
- 下载fiddler证书并设置信任
- android 首选网络类型,如何在adb android上更改首选网络类型? - 程序园
- 问卷星python自动提交
- hessian java_Hessian构建分布式系统应用
- 4、Eureka 源码解析 之 Eureka Client 启动原理分析