SpringBoot依赖管理

2,250 阅读3分钟

SpringBoot依赖管理

一般来讲SpringBoot项目是不需要指定版本,而SSM项目是需要指定版本,SpringBoot的核心依赖就是spring-boot-starter-parent和spring-boot-starter-web两个依赖,关于这两个依赖的相关介绍具体如下

spring-boot-starter-parent

<!-- Spring Boot父项目依赖管理-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.1</version>
    <relativePath/>
</parent>

上述代码中,将spring-boot-starter-parent依赖作为SpringBoot项目的统一父项目依赖管理,并将项目版本号统一为2.6.1.RELEASE,版本号可以根据实际开发场景的需要从而进行修改。

点击进入spring-boot-starter-parent底层源文件,可以发现如下内容

<!-- 父依赖 -->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.6.1</version>
</parent>


<properties>
  <java.version>1.8</java.version>
  <resource.delimiter>@</resource.delimiter>
  <maven.compiler.source>${java.version}</maven.compiler.source>
  <maven.compiler.target>${java.version}</maven.compiler.target>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

由上图可以知道spring-boot- starter-parent的底层有一个父依赖spring-boot-dependencies。而下方的properties属性主要是设置一些常用的属性,比如java的版本默认为1.8、maven的编译版本默认也是1.8和设置项目的字符集编码为UTF-8这些设置。

点击进入spring-boot-dependencies底层源文件,可以发现如下内容

image.png

image.png

从spring-boot-dependencies底层源文件可以看出,该文件通过标签对一些常用技术框架的依赖文件进行了统一版本号管理,例如ActiveMQ、Spring、Kafka、okhttp3等,都有与SpringBoot 2.6.1版本相匹配的版本,这也是pom.xml引入依赖文件不需要标注依赖文件版本号的原因。 需要注意的是,如果pom.xml引入的依赖文件不是spring-boot-starter-parent管理的,那么在pom.xml引入依赖文件时,需要使用version标签指定依赖文件的版本号。

spring-boot-starter-web

查看spring-boot-starter-web依赖文件源码,核心代码具体如下

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.6.1</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-json</artifactId>
    <version>2.6.1</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>2.6.1</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.3.13</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.13</version>
    <scope>compile</scope>
  </dependency>
</dependencies>

从上述代码可以发现,spring-boot-starter-web依赖的主要作用是提供Web开发场景所需的底层所有依赖。

所以在pom.xml中引入spring-boot-starter-web依赖时,就可以实现Web场景开发,而不需要额外导入Tomcat服务器以及其他Web依赖文件等。这些引入的依赖文件的版本号还是由spring-boot-starter-parent父依赖进行的统一管理。

总结

由上面两个例子知道,SpringBoot提供了很多其他许多开发场景的相关依赖,我们可以去SpringBoot官方文档中搜索“Starters”关键字查询场景依赖启动器

SpringBoot启动器

image.png

由于官方提供的依赖启动器很多,只列出了部分场景依赖启动器,这些依赖启动器适用于不同的场景开发,使用时只需要在pox.xml文件中导入对应的依赖启动器就可以使用。

注意:SpringBoot官方并没有针对所有场景开发的技术框架都提供了场景启动期,比如操作框架Mybatis、阿里巴巴的Druid等,都没有提供对应的依赖启动器,而时其他第三方官方团队主动与SpringBoot框架进行整合从而发布了各自的依赖启动期。

所以在使用第三方依赖启动器是,必须要配置对应的版本号