一、什么是SpringBoot父工程?

spring-boot-starter-parent 是SpringBoot官方提供的统一版本管理父工程,所有SpringBoot项目都默认继承它,是整个项目的版本与配置总管家。

我们新建SpringBoot项目时,pom.xml会自动生成以下代码:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.18</version>
    <relativePath/>
</parent>

核心定位:只管控版本和配置,不参与业务代码,不导入冗余jar包

二、父工程五大核心作用(重点)

1. 全局统一依赖版本,彻底解决版本冲突(最核心)

传统SSM开发中,我们需要手动导入每一个jar包、手动匹配兼容版本,极其容易出现版本不匹配、jar包冲突、类找不到等报错。

而SpringBoot父工程内部维护了一份全套组件兼容版本清单,涵盖Spring、SpringMVC、MyBatis、MySQL、Redis、Jackson、日志等所有常用框架。

带来的便利:

  • 子项目引入所有 Starter、第三方依赖,无需写 version 版本号

  • 框架自动匹配当前Boot版本的兼容依赖,从根源杜绝版本冲突

示例(无需指定版本):

<!-- 无需写version,父工程自动适配版本 -->
<dependency>
    <groupId>spring-boot-starter-web</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

2. 按需管理依赖,不冗余、不臃肿

很多新手有误区:父工程是不是会导入所有jar包?

答案:不会!

父工程通过 Maven 的 dependencyManagement 标签管理依赖:

  • 锁定版本,不会自动导入任何jar包

  • 子项目需要什么依赖,手动引入即可,按需加载

  • 完美避免项目依赖臃肿、冗余包过多的问题

3. 内置标准化Maven配置,简化pom文件

父工程提前封装了全套通用Maven配置,子项目直接继承,无需重复手写配置,极大简化开发!

默认自带配置:

  • 统一编码:项目全局默认UTF-8,彻底解决编译、资源文件中文乱码

  • 统一JDK版本:根据Boot版本自动适配对应JDK编译环境

  • 资源文件解析规则:自动识别 src/main/resources、src/test/resources 配置文件,支持yml/properties变量替换

  • 内置打包插件:自带spring-boot-maven-plugin,无需手动配置,一键打包生成可执行jar包

  • 统一测试环境:默认锁定JUnit、Mockito等测试组件版本

4. 统一管控Maven插件版本

Maven编译插件、资源插件、打包插件等,经常会因版本不兼容导致编译失败、打包报错。

父工程统一锁定了所有常用Maven插件的兼容版本,子项目使用插件无需指定版本,零配置、零报错

5. 全局统一版本管控,升级极其方便

父工程定义了大量全局属性,如${spring.version}${mysql.version}${mybatis.version}

  • 单独升级某个组件:子pom重写对应属性即可全局生效

  • 整体升级SpringBoot版本:仅修改父工程version一行代码,所有依赖、插件版本同步更新

极大提升项目维护效率,适配迭代升级!

三、高频面试区分:父工程 VS Starter启动器

很多面试会问两者区别,记住一句话即可:

  • spring-boot-starter-parent(父工程):负责 版本管控、Maven标准化配置,不导入业务jar

  • spring-boot-starter-xxx(Starter启动器):负责 导入对应场景的全套业务jar包

两者配合:父工程管版本,Starter管依赖导入,实现SpringBoot零配置极简开发。

四、全文总结(精华)

SpringBoot父工程的核心价值可以总结为4个关键词:锁版本、省代码、标准化、易维护

  1. 锁定所有依赖、插件版本,从根源解决版本冲突;

  2. 无需手动写版本号、无需重复配置Maven,简化pom配置;

  3. 统一编码、JDK、打包、测试等全套项目标准;

  4. 全局统一管控,项目升级、维护成本大幅降低。

更多推荐