1、简介

  • 为完成不同需求的Spring应用构建,SpringBoot提供了多种不同的依赖管理模板,每种模板均为一系列已完成的依赖的管理.例如如需要构建web项目,我们只需添加spring-boot-starter-web的依赖即可,它会将你所需的其他依赖导入到你的工程中.官方称之为"物料清单"(Bills of Materials),也因此在使用时我们需要构建工具的支持,如Maven或者Gradle等.
  • Spring Boot提供了多种不同的Starters来满足我们对不同"物料清单的需求",这些Starters均为依赖并命名格式为spring-boot-starter-*.通过使用这些starters,我们可以快速完成项目构建而一个个的进行依赖的导入.同时我们在使用时也不必控制依赖的版本,Spring Boot提供了默认的版本进行管理,在我们升级SpringBoot的版本时,这些依赖的版本也会进行更新.

2、依赖管理

  1. 继承Spring Boot的提供的父工程,需要在pom.xml中配置,xml配置如下:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.BUILD-SNAPSHOT</version>
</parent>
  • 这个父工程提供了多项的默认设置
  • 默认编译等级为Java1.6
  • 默认编码为UTF-8
  • 依赖管理模块(dependencyManagement),可以不配置version.
  • maven插件及resource filter的配置
  • 转为application.properties及application.yaml提供的resource filtering配置
  • 需要注意的一点是Spring Boot将Maven占位符设置为@…@,而不是常见的${…},如果需要替换可以通过设置resource.delimiter来完成
  1. 通过scope=import的方式引入 在很多时候我们需要继承自有的父工程或由于其他设置无法使用Spring Boot提供的父工程.此时可以通过scope=import的方式进行引入,如下:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.8.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

此处通过scope=import的方式导入了依赖的管理配置.但此时我们无法通过在properties中覆盖对应的属性来完成version的控制(因为没有继承父工程).以此应对的方式是通过在dependencyManagement中进行配置,并且要求在spring-boot-dependencies之前添加即可.同时,对应spring-boot-maven-plugin插件也需要显式配置才可以.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>