当前位置: 首页>编程语言>正文

springboot中poolResources所在依赖 springboot起步依赖

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

起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,通过依赖叠加,实现功能支持,因此很多依赖的命令都暗示了他们所提供的特定功能。

例如,你打算做一个web应用,有两种选择:一种是传统的向项目构建文件里添加一堆单独的库依赖;另一种,则是声明这个一个web应用程序,只需添加web起步依赖即可。

若想使用Thymeleaf为Web视图,用JPA来实现数据持久化,对应用程序进行测试,也可导入Thymeleaf、Spring Data JPA和Spring Boot的test的起步依赖。

springboot中poolResources所在依赖 springboot起步依赖,springboot中poolResources所在依赖 springboot起步依赖_xml,第1张

上述依赖,加一起一共才五个依赖,却等价于一堆独立依赖库。

另外,起步依赖会自动决定他们引入的传递依赖的版本,使用者不用担心依赖冲突的问题。

当然,若使用者若想知道自动都使用了哪些库,在构建工具中也能找到相关的答案。在Gradle里,dependencies任务会显示一个依赖树,其中包含了项目所用的每个库以及它们的版本。在Maven里使用denpendency插件的tree目标也能获得相似的依赖树。

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

以Spring Boot的web起步依赖为例,它传递了Jackson JSON库,若你不想使用Jackson想将其从依赖中移除该怎么做呢?

若使用Gradle,可以通过exclude group进行依赖移除:

springboot中poolResources所在依赖 springboot起步依赖,springboot中poolResources所在依赖 springboot起步依赖_SpringBoot系列_02,第2张

在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实战 ,丁雪丰 (译者)


https://www.xamrdz.com/lan/59t1957335.html

相关文章: