SpringBoot依赖管理

本文详细介绍了SpringBoot的依赖管理和场景启动器特性。依赖管理通过spring-boot-starter-parent和spring-boot-dependencies进行版本控制,使得开发者无需在pom.xml中指定版本即可引入所需jar包。场景启动器如spring-boot-starter-web则包含了一系列预设的依赖,简化了web应用的搭建。通过自定义属性可以指定特定版本的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

通过编写SpringBoot的Hello Word我们体会到了SpringBoot的强大与便捷。 这些功能都是基于SpringBoot给我们提供的两大优秀特性:

  • 依赖管理
  • 自动配置

这篇主要记录SpringBoot的依赖管理:

在我们创建的SpringBoot项目中,pom.xml文件中,默认只导入了spring-boot-starter-parent父项目和pring-boot-starter-web web场景包,这样我们整个SpringBoot应用程序就可以启动运行,这是为什么,让我们一探究竟。

一、依赖管理

这个父项目的作用就是用来做依赖管理的,子项目写依赖就不需要写版本号了。

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.5</version>
        <relativePath/> <!-- lookup parent from repository -->
  </parent>

我们点进去spring-boot-starter-parent,发现它还有一个父项目

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.5.5</version>
 </parent>

再点进spring-boot-dependencies这个包,发现里面有的<properties> 里面几乎声明了我们开发的所有jar包(我这里为了页面简简洁,删除了好多,用了。。。省略),声明了很多jar包的依赖,所以我们不用写版本号。

<properties>
    <activemq.version>5.16.3</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.91</appengine-sdk.version>
    <artemis.version>2.17.0</artemis.version>
    <aspectj.version>1.9.7</aspectj.version>
    <assertj.version>3.19.0</assertj.version>
    <atomikos.version>4.0.6</atomikos.version>
    <awaitility.version>4.0.3</awaitility.version>
    <build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version>
    <byte-buddy.version>1.10.22</byte-buddy.version>
    <caffeine.version>2.9.2</caffeine.version>
    <cassandra-driver.version>4.11.3</cassandra-driver.version>
    <classmate.version>1.5.1</classmate.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>
      <dependency>
    。。。。。

导入jar包

比如:我们要在我们的项目中使用mysql的驱动包,那只需要在我们的项目pom.xml文件中引入mysql驱动的依赖Maven坐标,无需写版本号,就会自动引入jar包。

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

导入自己想要的版本(不想使用Springboot导入的依赖版本)

如果我们需要自己想要版本号的jar包,按照spring-boot-dependencies定义好的依赖名称(查看spring-boot-dependencies里面规定当前依赖的版本 用的 key)重新导入需要的版本。

 // 自定义版本号
    <properties>
            <mysql.version>5.1.43</mysql.version>
    <properties/>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

二、场景启动器

我们创建的Springboot项目,开发web项目,我们无需导入很多依赖jar包,比如Spring, SpringMVC 等web开发所需要的jar的依赖,这是因为Springboot默认导入的spring-boot-starter-web场景启动器, 会帮我们导入所有web相关的jar包依赖。

starter是一组依赖的集合描述,只要引入一个starter,它的整个完整开发场景就被全部引入了。

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

进入spring-boot-starter-web可以看到,其所依赖的依赖jar坐标,其中最基本的核心依赖就是

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值