02、SpringBoot依赖管理及启动器的相关介绍
本文中对于SpringBoot的依赖管理的介绍都是使用Maven进行依赖管理的
1、依赖管理
每个版本的Spring Boot提供了一个它所支持的依赖关系列表。 实际上,您不需要为构建配置文件中的这些依赖关系提供版本,因为Spring Boot会为您进行管理这些依赖的版本。 当您升级Spring Boot本身时,这些依赖关系也将以一致的进行升级。
如果在使用的过程中你发现当前的SpringBoot管理的某个依赖版本不适合你的时候,你可以指定一个版本并覆盖SpringBoot建议的版本。用mysql-connector-java这个依赖举例,当你使用的SpringBoot的版本是1.5.2.RELEASE的时候,SpringBoot建议的依赖版本是5.1.42,如下图所示:
image.png
当你需要对mysql-connector-java这个依赖进行单独升级的话,你可以这样做:
<properties>
<mysql.version>5.1.42</mysql.version>
</properties>
这时候,你的mysql-connector-java这个依赖的版本就会变成5.1.42。
2、使用没有父pom的Spring Boot
如果你不想使用spring-boot-starter-parent,则可以通过使用scope=import依赖来保持依赖管理(但不能进行插件管理)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
需要注意的是该设置就不能使用之前的那种properties标签来对依赖的版本进行覆盖。要实现相同的结果,需要在spring-boot-dependencies之前添加。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
不是每个人都喜欢从spring-boot-starter-parent POM继承。 您公司可能有自己标准的parent,或者您可能只希望明确声明所有的Maven配置。
如果您不想使用spring-boot-starter-parent,则可以通过使用scope=import依赖来保持依赖管理(但不能进行插件管理):
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
该设置不允许您使用如13.2.1 所述的属性来覆盖单个依赖关系。 要实现相同的结果,您需要在spring-boot-dependencies条目之前在项目的dependencyManagement中添加一个条目。 例如,要升级到另一个Spring Data发行版本,您需要将以下内容添加到您的pom.xml中。
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3、启动器
启动器是一组方便的依赖关系描述符,可以包含在应用程序中。 您可以获得所需的所有Spring和相关技术的一站式服务,无需通过示例代码搜索和复制粘贴依赖配置。 例如,如果要开始使用Spring和JPA进行数据库访问,那么只需在项目中包含spring-boot-starter-data-jpa依赖关系即可。
启动器包含许多依赖关系,包括您需要使项目快速启动并运行,并具有一致的受支持的依赖传递关系。
(1)、启动器的命名方式
SpringBoot所有起动器都遵循类似的命名模式: spring-boot-starter- * ,其中 * 是特定类型的应用程序。 这个命名结构旨在帮助你快速找到一个启动器。
如果你想自定义一个启动器的话,官方建议的命名规则为 -spring-boot-starter-。
官方定义了很多的启动器,在这里我就不一一罗列了,有兴趣的可以自行去github上查看