前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题49:简单介绍一下,SpringBoot如何管理项目中的依赖?

面试题49:简单介绍一下,SpringBoot如何管理项目中的依赖?

作者头像
爪哇缪斯
发布2023-05-09 21:45:02
2770
发布2023-05-09 21:45:02
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

在之前我们做Spring项目的时候,需要面对的就是引入大量的第三方包,而包和包之前的版本依赖,一直也是让我们非常头疼的问题之一。依赖越多越复杂,版本管理的问题就会愈加突显出来。

那么SpringBoot的诞生,基于Spring在它的上层为我们做好了默认的一整套依赖包的版本管理。也就是说,如果我们没有必须要指定某一版本的强性需求的话,只需要关注采用哪个依赖,而不必在意版本了。

下面我们就来介绍一下SpringBoot的依赖管理。当我们通过Spring Initializer创建好一个基于SpringBoot的脚手架项目时,我们发现,在pom.xml文件中,有一个<parent>的标签,如下所示:

代码语言:javascript
复制
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.5</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

点击artifactId标签中的spring-boot-starter-parent,会跳转到spring-boot-starter-parent-2.5.1.pom,如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.5.1</version>
  </parent>
  <artifactId>spring-boot-starter-parent</artifactId>
  <packaging>pom</packaging>
  <name>spring-boot-starter-parent</name>
  ... ...

在spring-boot-starter-parent的pom中,父类标签指定的是spring-boot-dependencies,我们再次点击跳转进去。

代码语言:javascript
复制
... 
  <properties>
    <activemq.version>5.16.2</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.89</appengine-sdk.version>
    <artemis.version>2.17.0</artemis.version>
    <aspectj.version>1.9.6</aspectj.version>
    <assertj.version>3.19.0</assertj.version>
    ...
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-amqp</artifactId>
        <version>${activemq.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-blueprint</artifactId>
        <version>${activemq.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-broker</artifactId>
        <version>${activemq.version}</version>
      </dependency>
      ...
    </dependencies>
   </dependencyManagement>

我们发现,在spring-boot-dependencies的pom中,管理了将近200个第三方包依赖,并且也维护好了对应的版本。那么,我们就可以非常方便的针对自己的需要,在其中做选择使用,而不用担心有版本冲突的问题了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档