2.SpringBoot特点
依赖管理
每个Spring Boot版本都提供了它所支持的依赖关系的精选列表。实际上,您不需要为构建配置中的所有这些依赖项提供版本,因为Spring Boot会为您管理该版本。当您升级Spring Boot本身时,这些依赖项也会以一致的方式升级。您仍然可以指定一个版本,并在需要时覆盖Spring Boot的建议。
父项目
任何一个springboot项目都会引入父项目依赖用来做项目版本管理
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.5</version> <relativePath/> <!-- lookup parent from repository --> </parent>
当我们按住ctrl点击这个parent依赖可以看到如下
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.4.5</version> </parent>
这个dependencies是spring-boot-starter-parent父依赖,真正管理Spring Boot应用里面的所有依赖版本,是正真的boot版本仲裁中心,再次进入这个dependencies版本中心,可以看到许多的版本版本声明,列举如下
<properties> <activemq.version>5.16.1</activemq.version> <antlr2.version>2.7.7</antlr2.version> <appengine-sdk.version>1.9.88</appengine-sdk.version> <artemis.version>2.15.0</artemis.version> <aspectj.version>1.9.6</aspectj.version> <assertj.version>3.18.1</assertj.version> <atomikos.version>4.0.6</atomikos.version> <awaitility.version>4.0.3</awaitility.version> <bitronix.version>2.1.4</bitronix.version> <build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version> <byte-buddy.version>1.10.22</byte-buddy.version> <caffeine.version>2.8.8</caffeine.version> <cassandra-driver.version>4.9.0</cassandra-driver.version> <classmate.version>1.5.1</classmate.version> ....
所以以后导入其他此处已经存在的依赖默认不需要写版本,比如项目需要使用mysql驱动依赖,我们直接引入依赖,不需要写版本,自动引入默认的版本
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
如果不想使用默认的版本,在pom文件中使用properties标明,key使用版本中心使用的key,如mysql:<mysql.version>8.0.23</mysql.version><properties> <mysql.version>5.1.43</mysql.version> </properties>
但是引入非版本仲裁的jar,要写版本号
开发导入starter场景启动器
如
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
所以Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器
SpringBoot所有支持的场景:https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter所有场景启动器最底层的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.3.4.RELEASE</version> <scope>compile</scope> </dependency>