理解spring-boot-starter-parent

通过SpringInitializr可以快速构建SpringBoot应用,通常会继承spring-boot-starter-parent,它提供了默认配置,包括Java版本、编码、依赖管理和资源处理等。如果不继承,可以通过引入spring-boot-dependencies实现依赖管理。文章还介绍了如何重写依赖版本以及在无父POM时如何配置打包和依赖。

通过spring initializr,我们可以快速构建一个springboot应用,如果你选择的是Maven来管理项目,在默认的pom文件中有这么一个section:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
</parent>

它表示当前pom文件从spring-boot-starter-parent继承下来,在spring-boot-starter-parent中提供了很多默认的配置,这些配置可以大大简化我们的开发。

Parent Poms Features

通过继承spring-boot-starter-parent,默认具备了如下功能:

  1. Java版本(Java8)
  2. 源码的文件编码方式(UTF-8)
  3. 依赖管理
  4. 打包支持
  5. 动态识别资源
  6. 识别插件配置
  7. 识别不同的配置,如:application-dev.properties 和 application-dev.yml

以上继承来的特性有的并非直接继承自spring-boot-starter-parent,而是继承自spring-boot-starter-parent的父级spring-boot-dependencies

需要特别说明的是,application-dev.properties 和 application-dev.yml支持spring风格的占位符(${…​}),但是Maven项目把对占位符的支持改为(@..@),可以通过设置Maven属性resource.delimiter来重置回去。

继承spring-boot-starter-parent后,大大简化了我们的配置,它提供了丰富的常用的默认的依赖的版本定义,我们就不需要再次指定版本号:

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

假设我们需要定制自己的版本号,可以通过下面的方式重写:

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

不继承spring-boot-starter-parent构建springboot项目

有时候项目可能有自己的parent poms,Maven只允许定义一个parent pom,这时的项目虽然没有继承自spring-boot-starter-parent,但是依赖管理始终需要的,可以通过如下配置引入spring-boot-dependencies的依赖管理功能:

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.0.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope> 
        </dependency>
    </dependencies>
</dependencyManagement>

那么在这种情况下要重写依赖的版本号就需要用另外的方式:

<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>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.0.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

除了依赖管理,打包也是需要的:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>1.4.0.RELEASE</version>
      <configuration>
        <executable>true</executable>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

增加以上配置后就可以使用熟悉的mvn pacakge成一个jar了。



作者:Johnny_
链接:https://www.jianshu.com/p/628acadbe3d8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

### Spring Boot Starter Parent 和 Druid-Spring-Boot-Starter 的兼容性分析 Spring Boot 提供了一个强大的依赖管理机制,通过 `spring-boot-starter-parent` 定义了一组默认的依赖版本。为了确保与特定版本的 `spring-boot-starter-parent` 兼容,通常需要选择与其匹配的第三方库版本。 对于 `spring-boot-starter-parent` 版本 2.7.18,推荐使用的 `druid-spring-boot-starter` 版本为 **1.2.0** 或更高版本[^1]。这是因为 Druid 自身也在不断更新其功能和兼容性支持,而版本 1.2.0 及以上已经明确声明对 Spring Boot 2.x 系列的支持[^2]。 以下是 Maven 配置示例: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> <!-- 推荐版本 --> </dependency> ``` 需要注意的是,在引入 `druid-spring-boot-starter` 后,应验证项目中的其他依赖是否存在冲突。如果遇到问题,可以通过调整 BOM(Bill of Materials)来统一管理依赖版本[^3]。 --- #### 关于版本选择的具体依据 Druid 是阿里巴巴开源的一款数据库连接池组件,其官方文档指出,自版本 1.2.0 起正式支持 Spring Boot 2.x 系列[^4]。因此,当使用 `spring-boot-starter-parent` 2.7.18 时,建议优先考虑 Druid 的最新稳定版,即当前可用的最高次级版本(如 1.2.8),以获得更好的性能优化和支持。 此外,还需注意以下几点: - 如果项目中有其他 Alibaba 开源组件(如 Sentinel 或 Nacos),需确认它们之间的版本一致性。 - 使用过程中可以启用日志调试模式,观察 Druid 是否正常初始化并加载配置文件[^5]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值