SpringBoot专题

02、SpringBoot依赖管理及启动器的相关介绍

2019-06-14  本文已影响0人  Albert_Yu

本文中对于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上查看

上一篇下一篇

猜你喜欢

热点阅读