SpringBoot了解自动配置原理(一)

  • 一、SpringBoot特点
  • 1.1、依赖管理
  • 1.1.1 自动版本仲裁
  • 1.1.2 场景启动器


一、SpringBoot特点

1.1、依赖管理

  • 父项目做依赖管

1.1.1 自动版本仲裁

依赖管理    
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.3.4.RELEASE</version>
</parent>

在上一篇文章中我们在pom.xml文件引入了这个父项目,它是做什么用的呢?我们ctrl+左键点击spring-boot-starter-parent进去看看就知道了

结果发现它也有一个父项目

spring boot 需要依赖 springboot依赖管理原理_java

  • 那就继续点进去,看看我们本项目导入的父项目(spring-boot-starter-parent)中的父项目(spring-boot-dependencies)具体有什么

    会发现spring-boot-dependencies它几乎声明了所有开发中常用的依赖的版本号。
    因为maven的依赖传递原因,当父maven声明了依赖(声明了依赖的版本号也一样)时,它的子maven也会继承父maven声明的所有依赖(也会继承父maven声明的版本号)
    这里父maven声明了依赖的版本号,子maven也会有这些依赖的版本号,这就实现的自动版本仲裁机制。

1、引入依赖默认都可以不写版本 2、引入非版本仲裁的jar,要写版本号。 可以修改默认版本号 1、查看spring-boot-dependencies里面规定当前依赖的版本 用的 key。 2、在当前项目里面重写配置

<properties>
    <mysql.version>5.1.43</mysql.version>
</properties>

1.1.2 场景启动器

我们知道了它对依赖版本的控制,那么springboot是怎么知道我要具体使用什么依赖呢?平时我们要做web开发要导入一堆的依赖如:json、servlet、jsp、junit等等。现在我们有了springboot要开发web只要导入一个依赖就可以

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

解释:
web的启动器

  • 它会导入web的场景下所有要用的依赖
  • starter意思就是一组依赖的描述
  • spring-boot-starter-*,*就代表某种场景

点进spring-boot-starter-web这个依赖可以看到

spring boot 需要依赖 springboot依赖管理原理_spring_02


它也导入了一堆的依赖,也利用了maven的依赖传递。

而XX启动器就是帮我们对 某些开发场景需要导入的所有依赖进行了整合,我们要开发某种场景,比如我们要开发web应用,就导入web启动器spring-boot-starter-web,它就会导入web下的所有需要的依赖

下一篇:SpringBoot了解自动配置原理(二)