目录12
在 2017-3-18 记读书笔记

覆盖起步依赖引入的传递依赖

说到底, 起步依赖和项目里的其他的依赖都是没有区别的, 也就是说, 你可以选择构建时候的依赖, 也可以覆盖它们引入的依赖, 排除传递依赖, 当然也可以为那些 Spring Boot 起步依赖没有涵盖的库指定对应的依赖.

举个例子, 排除一个 Jackson 的依赖.

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <exclusions>
  5. <exclusion>
  6. <groupId>com.fasterxml.jackson.core</groupId>
  7. </exclusion>
  8. </exclusions>
  9. </dependency>

如果项目中需要一个 Jackson, 而且这个不是项目中起步依赖里的那个, 那就可以在 Maven 的 pom.xml 里引入

  1. <dependency>
  2. <groupId>com.fasterxml.jackson.core</groupId>
  3. <artifactId>jackson-databind</artifactId>
  4. <version>2.4.3</version>
  5. </dependency>

不管什么情况,在覆盖Spring Boot起步依赖引入的传递依赖时都要多加小心。虽然不同的版本放在一起也许没什么问题,但你要知道,起步依赖中各个依赖版本之间的兼容性都经过了精心的测试。应该只在特殊的情况下覆盖这些传递依赖(比如新版本修复了一个bug)。

现在我们有了一个空的项目结构,构建说明文件也准备好了,是时候开发应用程序了。我们会让Spring Boot来处理配置细节,而我们自己则专注于编写阅读列表功能相关的代码。

疑问?答疑?
关注极客云图了解更多内容