《学会 SpringBoot · 依赖管理机制》

server/2024/10/18 6:12:17/

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 写在前面的话
    • 依赖管理机制
    • 总结陈词

CSDN.gif

写在前面的话

进行 SpringBoot 开发工作的,引入 spring-boot-starter-web 就可以让程序具备 SpringMVC 的功能,而且连版本号也不需要写。
本篇博文简单介绍一下 SpringBoot 的依赖管理机制。


依赖管理机制

【SpringBoot 场景启动器】
SpringBoot 的场景启动器,导入相关的场景,拥有相关的功能。
默认支持的所有场景:链接
● 官方提供的场景:命名为:spring-boot-starter-*
● 第三方提供场景:命名为:*-spring-boot-starter
场景一导入,万物皆就绪。

【疑问:为什么导入 starter-web 所有相关依赖都导入进来?】
SpringBoot 场景启动器,开发什么场景,就导入什么场景启动器。
基于 Maven 依赖传递原则,A依赖B,B依赖C,那么A就拥有B和C。
因此,导入场景启动器,自动把这个场景的所有核心依赖全部导入进来。

【疑问:为什么不需要写版本号?】
每个 SpringBoot 项目都有一个父项目 spring-boot-starter-parent,而它的父项目是 spring-boot-dependencies。
spring-boot-dependencies 相当于版本管理中心,把所有常见的jar的依赖版本都声明好了。
主要也是利用 Maven 的 dependencyManagement 特性。

【疑问:如何自定义版本】
直接利用maven的就近原则。
1、直接在当前项目 properties 标签中声明父项目用的版本属性
以 Redis 客户端为例:

<jedis.version>调整为自己需要的版本</jedis.version>

其在 spring-boot-dependencies 中定义如下:

<jedis.version>5.0.2</jedis.version>
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>${jedis.version}</version>
</dependency>

2、直接在导入依赖的时候声明版本

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>调整为自己需要的版本</version>
</dependency>

【总结一下】
基于 Maven 实现了依赖管理机制,开发中按需引入场景,其他 SpringBoot 帮忙做好了。
要注意的是:
1、SpringBoot 有管理的依赖,版本号尽可能用默认的,兼容性问题较少;
2、SpringBoot 有管理的依赖,比如第三方的 jar 包,需要自行声明好;
依赖信息参考:Maven 仓库


总结陈词

💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

CSDN_END.gif


http://www.ppmy.cn/server/104447.html

相关文章

这是啥设计模式-单例模式

召回算法中有一个叫做I2I的召回方式&#xff0c;给定一个Item&#xff0c;返回跟这个Item相似的topK个Item&#xff0c;这种相似关系一般在离线就计算好了&#xff0c;以KV的方式存储下来 <item1, [item2, item3,item4]> <item2, [item1, item5,item6]> ...我们使…

docker启动ES(elasticsearch:7.17.23)

docker直接启动es&#xff0c;报如下错误 2024-08-22 10:52:27 ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. 2024-08-22 10:52:27 bootstrap check failure [1] of [1]: the defa…

jmeter 请求带证书的 客户端的SSL/TLS证书和私钥https请求

背景: 工作需要对下面接口进行压测,走的是https 带证书的请求 curl -v -X POST -u acsuser:admin20232023 --cert /home/bdgw/ssl/server.crt --key /home/bdgw/ssl/server.key -H "Content-Type: application/json" -d {"thirdAlarmId":"comp2…

更换域名后图片不显示

问题&#xff1a;系统更换域名后&#xff0c;图片不显示了&#xff1b; 原因&#xff1a;系统中图片是带域名存储在数据的&#xff0c;所以更换域名后&#xff0c;图片地址还是以前的域名&#xff0c;所以访问不到&#xff1b; 解决方法&#xff1a; 以下两个方法都是只能更…

git如何将多个提交合并为一个提交

目录 第一种&#xff1a;使用git rebase命令 第二种&#xff1a;使用git reset命令 重新提交 第一种&#xff1a;使用git rebase命令 使用以下命令的其中一种启动交互式 rebase git rebase -i 你想要合并提交的父提交的哈希值git rebase -i <commit-hash>^ &#…

PCL-基于超体聚类的LCCP点云分割

目录 一、LCCP方法二、代码实现三、实验结果四、总结五、相关链接 一、LCCP方法 LCCP指的是Local Convexity-Constrained Patch&#xff0c;即局部凸约束补丁的意思。LCCP方法的基本思想是在图像中找到局部区域内的凸结构&#xff0c;并将这些结构用于分割图像或提取特征。这种…

mac安装ipa包【金铲铲为例】

mac安装ipa包 安装PlayCover 链接&#xff1a;https://github.com/PlayCover/PlayCover 1、点最新Releases 2、cmd ↓&#xff0c;拉到最下面下载dmg 3、安装 图标拖拽到Applications里 IPA下载 以金铲铲为例&#xff0c;良心砸壳包站点&#xff0c;有能力可以支持一下…

day40——IO模型补充

2.4 epoll模型 epoll模型只有linux系统才有 epoll模型只有从linxu内核2.4版本之后才有 epoll从2.4内核到目前的4.X内核&#xff0c;没有更新的模型了&#xff0c;说明epoll模型本身已经很完美了 select的问题&#xff1a; 监视列表无法扩容 监视列表和返回的激活列表混在了…