Spring Boot教程(4) – 依赖管理

栏目: Java · 发布时间: 5年前

内容简介:不管你熟悉不熟悉Gradle,build.gradle文件中的内容都是要去重新认识的。上图是一个典型的,刚刚生成的build.gradle文件,添加了个Guava依赖。说到这儿,又要牵扯出很多东西了,容我深吸一口气。

不管你熟悉不熟悉Gradle,build.gradle文件中的内容都是要去重新认识的。

Spring Boot教程(4) – 依赖管理

上图是一个典型的,刚刚生成的build.gradle文件,添加了个Guava依赖。 repositories{ mavenCentral() } 这段代码表示我们的依赖都是从中央仓库下载的。 比如这个Guava库,implementation后面跟上库的坐标就可以引入 ,之前我们说过,坐标由 groupId:artifactId:version 组成。奇怪的是,上面列出的第一个依赖,却没有版本号。因为这个版本号是由一个插件管着的,插件叫做 io.spring.dependency-management。

说到这儿,又要牵扯出很多东西了,容我深吸一口气。

什么是Starter?

Spring Boot的特点就是简化了依赖,一旦引入,就可以按照默认的方式配置好。这个时候,Spring Boot引入了“Starter”的概念,一个Starter其实可以代表一个功能,引入一个Stater,就表示引入了某个功能,实现这个功能所需要的依赖,都会被引入并且配置好。比方说图中,我们引入了Web Starter(Artifact ID是spring-boot-starter-web),它提供了web开发的功能,web开发功能需要很多依赖来完成,如图:

Spring Boot教程(4) – 依赖管理
IntelliJ IDEA的Gradle工具栏可以查看项目的所有依赖

可以看出,Web Stater使用了Spring MVC来处理请求,用Jackson做JSON处理,用Tomcat作为内置服务器,你搞Web开发肯定离不开这些东西吧,Web Starter直接给你弄好了。只需要添加一行Web Starter的依赖就行。类似的Starter 还有几十个 。Starter可以是官方实现的,也可以是开源库自己实现的,也可以团队里成员自己开发的。

哪些依赖的版本可以省略?

官方维护了一个 列表 ,里面列出了可以省略版本号的依赖,包括官方实现的Starter和一些常用的第三方库。对于每一个Spring Boot版本,都有这样一个列表。比方说你把Spring Boot的版本从2.1.4升级到2.1.5,那么列表中的依赖会跟着变。

如果你对于这种自动维护的版本号,感觉心里不踏实,还是有办法改的:

Spring Boot教程(4) – 依赖管理

对于Spring Boot 2.1.5来说,Web Starter自带了Jackson,版本是2.9.8。如果你这时候想使用2.9.9的某个特性,通过上图的代码就可以做到。

注意,每个Spring Boot版本,都针对其列表里的第三方库有过测试,改了版本号有可能不兼容。版本可以改,使用要谨慎。

build.gradle用了哪些插件?

除了上面提到的 io.spring.dependency-management,build.gradle中还引入了 java 插件和org.springframework.boot插件,前者是用来搞纯java开发的,后者是用来执行Spring Boot相关任务的,我们熟悉的bootRun和bootJar任务都是从这个插件来的。

都是插件,引入的方式竟然还不同,java和org.springframework.boot是通过 plugins{ id ...} 的形式引入的,io.spring.dependency-management却是通过 apply plugin: ... 的方式引入。前者更新一点,后者更老更灵活一点,两种形式的差别可以在 Gradle文档 中找到。反正我是没搞明白为什么生成的build.gradle要这样写,我把所有插件都放到 plugins{ id ...} 中,也能运行。有懂行的可以留个言给大家解个惑。

Spring Boot教程(4) – 依赖管理
这样也行

其他一些技巧

  • 如果你需要引入一个新的Starter或者第三方库,建议去Spring Initializr看看上面的依赖有没有你需要的。有的话创建一个新项目下载下来,把它的build.gradle中新增的东西拷贝进来。因为增加一个依赖不仅仅是加一句 implementation '...' ,可能还有其他区别。
  • 如果你真的对中央仓库中的库的依赖关系比较好奇,建议到 https://mvnrepository.com/ 上看一看,逛一逛。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

百面机器学习

百面机器学习

诸葛越、葫芦娃 / 人民邮电出版社 / 2018-8-1 / 89.00元

人工智能领域正在以超乎人们想象的速度发展,本书赶在人工智能彻底占领世界之前完成编写,实属万幸。 书中收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景。本书从日常工作、生活中各种有趣的现象出发,不仅囊括了机器学习的基本知识 ,而且还包含了成为出众算法工程师的相关技能,更重要的是凝聚了笔者对人工智能领域的一颗热忱之心,旨在培养读者发现问题、解决问......一起来看看 《百面机器学习》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具