SpringBoot的依赖管理的两个问题

介绍

SpringBoot的两大核心,依赖管理和自动配置。传统的Spring框架,需要导入各种依赖jar,但是Spring导入的各种starter,往往不需要额外版本号就能完美匹配。


问题1:为啥导入依赖时不需要指定版本?

  1. SpringBoot项目,包含了一个父依赖 spring-boot-starter-parent
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent<11./artifactId>
    <version>2.2.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
  1. spring-boot-starter-parent作为了SpringBoot项目的统一父项目依赖管理,只需要修改这一项目版本号即可修改相关的依赖版本。
  2. spring-boot-starter-parent 的properties定义了一些,java的版本,编码和插件管理等信息后,还有一个父依赖。spring-boot-dependencies
  3. spring-boot-dependencies 中的properties中定义了大量的版本号,指定了与对应的SpringBoot版本匹配的依赖的版本。并且通过 dependencyManagement进行了版本的管理。这样的话所有子项目引入其中包含的jar时,可以不用显式的列出版本号,Maven会向上级寻找拥有dependencyManagement 的项目。使用其指定的版本号,dependencyManagement 只定义依赖的声明,并不引入实现。

问题2:项目运行时依赖的jar是哪儿来的?

  1. 项目引入spring-boot-starter-web 时,看起来只引入了一个jar,但是点进去之后发现其实引入了Web开发场景所需的所有底层依赖。
    在这里插入图片描述

  2. 这些依赖的版本,还是由spring-boot-starter-parent父依赖进行的统一管理

  3. Spring Boot除了提供有上述介绍的Web依赖启动器外,还提供了其他许多开发场景的相关依赖,打开Spring Boot官方文档,搜索“Starters”关键字查询场景依赖启动器
    在这里插入图片描述

  4. Spring Boot官方并不是针对所有场景开发的技术框架都提供了场景启动器,例如数据库操作框架MyBatis、阿里巴巴的Druid数据源等,Spring Boot官方就没有提供对应的依赖启动器。为了充分利用Spring Boot框架的优势,在Spring Boot官方没有整合这些技术框架的情况下,MyBatis、Druid等技术框架所在的开发团队主动与Spring Boot框架进行了整合,实现了各自的依赖启动器,例如mybatis-spring-boot-starter、druid-spring-boot-starter等。在pom.xml文件中引入这些第三方的依赖启动器时,要配置对应的版本号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值