Spring Boot入门(三)起步依赖

Spring Boot起步依赖的功能:开发者只需指定功能,构建过程自动分析用户需求,引入相关依赖

起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,通过依赖叠加,实现功能支持,因此很多依赖的命令都暗示了他们所提供的特定功能。
例如,你打算做一个web应用,有两种选择:一种是传统的向项目构建文件里添加一堆单独的库依赖;另一种,则是声明这个一个web应用程序,只需添加web起步依赖即可。
若想使用Thymeleaf为Web视图,用JPA来实现数据持久化,对应用程序进行测试,也可导入Thymeleaf、Spring Data JPA和Spring Boot的test的起步依赖。
在这里插入图片描述
上述依赖,加一起一共才五个依赖,却等价于一堆独立依赖库。
另外,起步依赖会自动决定他们引入的传递依赖的版本,使用者不用担心依赖冲突的问题。
当然,若使用者若想知道自动都使用了哪些库,在构建工具中也能找到相关的答案。在Gradle里,dependencies任务会显示一个依赖树,其中包含了项目所用的每个库以及它们的版本。在Maven里使用denpendency插件的tree目标也能获得相似的依赖树。

自定义依赖如何覆盖起步依赖

以Spring Boot的web起步依赖为例,它传递了Jackson JSON库,若你不想使用Jackson想将其从依赖中移除该怎么做呢?
若使用Gradle,可以通过exclude group进行依赖移除:
在这里插入图片描述
在Maven中,则可以使用元素来排除传递依赖。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<exclusion>
			<groupId>com.fasterxml.jackson.core</groupId>
		</exclusion>
	</exclusions>
</dependency>

另外,若项目需要使用另一个版本的Jackson(非Spring Boot依赖传递所提供的)来进行构建,在Maven中,可直接在pom.xml中表达:

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</atrifactId>
	<version>2.4.3</version>
</dependency>

Maven会使用最近的依赖,也就是说,你在项目构建说明文件里增加的这个依赖,会覆盖传递依赖引入的另一个依赖。
若使用Gradle,可以在build.gradle文件里指明你要的Jackson版本:

compile("com.fasterxml.jackson.core:jackson-databind:2.4.3")

注意:Gradle倾向使用库的最新版本,就是说若你使用的jackson版本要老于Spring Boot提供的版本,则不得不把web起步依赖中Spring Boot提供的版本剔除掉:

compile("org.springframework.boot:spring-boot-starter-web") {
exclude group: 'com.fasterxml.jackson.core'
}
compile("com.fasterxml.jackson.core:jackson-databind:2.3.1")

参考文献:Spring Boot实战 ,丁雪丰 (译者)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值