说到底, 起步依赖和项目里的其他的依赖都是没有区别的, 也就是说, 你可以选择构建时候的依赖, 也可以覆盖它们引入的依赖, 排除传递依赖, 当然也可以为那些 Spring Boot 起步依赖没有涵盖的库指定对应的依赖.
举个例子, 排除一个 Jackson 的依赖.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
</exclusions>
</dependency>
如果项目中需要一个 Jackson, 而且这个不是项目中起步依赖里的那个, 那就可以在 Maven 的 pom.xml 里引入
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
不管什么情况,在覆盖Spring Boot起步依赖引入的传递依赖时都要多加小心。虽然不同的版本放在一起也许没什么问题,但你要知道,起步依赖中各个依赖版本之间的兼容性都经过了精心的测试。应该只在特殊的情况下覆盖这些传递依赖(比如新版本修复了一个bug)。
现在我们有了一个空的项目结构,构建说明文件也准备好了,是时候开发应用程序了。我们会让Spring Boot来处理配置细节,而我们自己则专注于编写阅读列表功能相关的代码。