Spring源码深度解析 Spring Boot 体系原理总结

Spring Boot 特点如下:
创建独立的 Spring 应用程序;
嵌入的 Tomcat ,无须部署 WAR 文件;
简化 Maven 配置;
自动配置 Spring;
提供生产就绪型功能,如指标、健康检查和外部配置;
绝对没有代码生成,以及对 XML 没有配置要求

首先搭建一个 maven 工程, pom 如下:
在这里插入图片描述
在这里插入图片描述
然后建立一个 controller 类
在这里插入图片描述
最后再加入启动整个项目的 main 函数
在这里插入图片描述
最后启动main函数并在浏览器中输入localhost:8080
在这里插入图片描述

第一个 Starter
spring starter 的出现,可以让模块开发更加独立化,相互间依赖更加松散以及可以更加方便地集成
在这里插入图片描述

另建一个 maven 工程 pom 如下
在这里插入图片描述
在这里插入图片描述
然后定义一个接口,可以认为它是当前独立业务开发模块对外暴露的可以直接调用的
接口,如下:
在这里插入图片描述
对这个接口做一个简单的实现,返回 hello 字符串:
在这里插入图片描述
继续追加代码,添加自动配置项:
在这里插入图片描述
最后一步,声明这个配置文件的路径,在 Spring 的跟路径下建立 META-INF/spring.factories 文件 ,并声明配置项路

在这里插入图片描述
修改 Web 工程,加入依赖
在这里插入图片描述
更改 Controller 逻辑,将模块的逻辑引入
在这里插入图片描述
在这里插入图片描述
刚才开发的 Starter 非常的方便 除了在 pom 中引入依赖
,什么都不做就可以直接使用模块内部的接口注入
在这里插入图片描述

探索 SpringApplication 启动 Spring
在这里插入图片描述
当顺着 SpringApplication.run 方法进入的时候找到了 SpringApplication 的一个看似核心
逻辑的方法
在这里插入图片描述
在这里插入图片描述
关键字眼:
在这里插入图片描述

SpringContext 创建
在这里插入图片描述
这个函数似乎没有什么特别之处,元非就是实例化一个 ApplicationContext ,因为
ApplicationContext 是 Spring 存在的基础 而对应的 SpringContext 候选类如下:
在这里插入图片描述

bean 的加载
继续返回追踪 prepareContext:
在这里插入图片描述
这里面的 load 函数是比较感兴趣的,代码如下:
在这里插入图片描述

Spring 扩展属性的加载
在这里插入图片描述

Spring Boot 的启动并不是想象的那么神秘,按照约定大于配置的原则,内
置了 Spring 原有的启动类 并在启动的时候启动及刷新,仅此而已
在这里插入图片描述

Starter 自动化配置原理
继续追查代码,看一看 SpringBootApplication 注解内容
在这里插入图片描述
注解具有传递性,EnableAutoConfiguration 是个非常特别的注解 ,它是 Spring Boot 的全局开关 ,如果把这个注解
去掉,则一切 Starter 都会失效 ,这就是约定大于配置的潜规则 那么 Spring Boot 的核心很可
能就藏在这个注解里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值