Spring Boot 自动装配原理
时间:2022-07-22
本文章向大家介绍Spring Boot 自动装配原理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原理初探
springboot 为我们封装了大量的xml配置,使得我们构建web程序可以实现开箱即用
0x01 自动配置
pom.xml
- spring-boot-dependencies: 核心的依赖在父工程中
- 我们在写或者引入一些springboot的依赖时,不需要指定版本号,因为在父级依赖中已经帮我们指定好了
0x02 启动器
springboot将所有的功能都变成了一个个的启动器
pom.xml
<dependencies>
<!--web环境启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--单元测试启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
比如在上面的配置中的spring-boot-starter-web
为我们导入了web环境所需的所有依赖
我们需要上面功能,只要找到对应的启动器starter
就行了,在以下链接中可以看到springboot官网提供的一些启动器
0x03 主程序
//@SpringBootApplication: 该注解标注这是一个springboot应用:启动类下的所有资源被导入
@SpringBootApplication
public class FirstSpringbootApplication {
public static void main(String[] args) {
//将springboot应用启动
SpringApplication.run(FirstSpringbootApplication.class, args);
}
}
涉及到的原理太多,后续再补充
个人觉得入门阶段不应该卡在原理这里花太多时间,应该尽快进入实战阶段,但是相关的springboot配置原理不能落下,该做笔记的还是要做,有过相关的实战经验过后再回来探究原理的价值更高。
- 深入剖析Spring(一)——IoC的基本概念(从面向对象角度介绍)
- Restful安全认证及权限的解决方案
- Java并发容器大合集
- Java并发编程的艺术(九)——批量获取多条线程的执行结果
- web.xml中load-on-startup的作用
- Java并发编程的艺术(七)——Executors
- Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
- PowerDesigner使用教程|使用方法
- Java并发编程的艺术(一)——并发编程需要注意的问题
- 梯度下降法快速教程 | 第三章:学习率衰减因子(decay)的原理与Python实现
- Java并发编程的艺术(三)——volatile
- java学习手册-java 新手入门必看的30个题
- Java并发编程的艺术(五)——中断
- 简易的深度学习框架Keras代码解析与应用
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 剑指Offer LeetCode 面试题18. 删除链表的节点
- 剑指Offer LeetCode 面试题06. 从尾到头打印链表
- 最详细的docker中安装并配置redis
- 剑指Offer LeetCode 面试题59 - I. 滑动窗口的最大
- 剑指Offer LeetCode 面试题58 - II. 左旋转字符串
- 剑指Offer LeetCode 面试题58 - I. 翻转单词顺序
- 剑指Offer LeetCode 面试题56 - II. 数组中数字出现的次数 II
- 站在软件工程的角度重新思考面向对象(含高清图谱)
- 剑指Offer LeetCode 面试题57. 和为s的两个数字
- 白嫖Layui树型可折叠,可自定义,可搜索表格的实例
- 剑指Offer LeetCode 面试题53 - II. 0~n-1中缺失的数字
- 聊聊dubbo-go的DubboPackage
- 剑指Offer LeetCode 面试题53 - I. 在排序数组中查找数字 I
- Java虚拟机运行时数据区精华总结
- 剑指Offer LeetCode 面试题50. 第一个只出现一次的字符