注:翻译内容中包含Gradle和Ant方式的构建过程,这里不做介绍,只用 Maven
说明
接下来属于将入门的操作步骤拆开来一步步讲解,
每一步都很简单,功能也不复杂,只有组合在一起之后才会发挥效用,
此次尽量翻译通顺,使内容便于理解。
Maven依赖管理
每个版本的Spring Boot都提供了它支持的依赖项的精选列表。实际上,您不需要为构建配置中的任何这些依赖项提供版本,因为Spring Boot会为您管理这些依赖项。当您升级Spring Boot时,这些依赖项也会以一致的方式升级。如果需要,您仍然可以指定版本并覆盖Spring Boot的配置。
注:每个版本的Spring Boot都与Spring Framework的基本版本相关联,我们强烈建议您不要指定其版本。
Maven
Maven用户可以从spring-boot-starter-parent
项目继承并获得合理的默认值。父项目提供以下功能:
- Java 1.8作为默认编译器级别。
- UTF-8源编码。
- 继承自spring-boot-dependencies pom的依赖关系管理部分,用于管理公共依赖关系的版本。此依赖关系管理允许您在自己的pom中使用时省略这些依赖项的<version>标记。
- 按配置好的版本依赖ID 执行
repackage
目标。 - 自动 资源过滤。
- 自动插件配置 (exec plugin, Git commit ID, 和 shade).
- 自动资源过滤适用于
application.properties
和application.yml
以及特定开发配置文件(例如,application-dev.properties
和application-dev.yml
)
请注意,由于application.properties
和application.yml
文件接受Spring样式占位符(${…}
),因此Maven过滤被更改为使用@..@
占位符。(您可以通过设置调用的Maven属性来覆盖它resource.delimiter
。)
继承Starter Parent
要将项目配置为继承spring-boot-starter-parent
,对parent
按如下所示进行设置 :
<!-- 继承自Spring Boot 默认启动器-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
</parent>
您应该只需要在此依赖项上指定Spring Boot的版本号。如果导入其他启动器,则可以安全地省略版本号。
要使用网络等功能,您需要将以下内容添加到pom.xml
:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
检查 spring-boot-dependencies
pom 以获取支持的属性列表。
在没有父POM的情况下使用Spring Boot
不是每个人都喜欢从spring-boot-starter-parent POM
继承。您可能需要使用的公司标准父级,或者您可能更愿意明确声明所有的Maven配置。
如果您不想使用spring-boot-starter-parent
,您仍然可以通过使用scope=import
依赖项来保持依赖项管理 ,如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<!-- 从 Spring Boot 中导入依赖管理 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
如上,示例设置不允许您使用属性覆盖单个依赖项。要想获得希望的结果,您需要在输入之前dependencyManagement
项目中添加一个条目。例如,要升级到另一个Spring Data
版本系列,您可以将以下元素添加到pom.xml
<dependencyManagement>
<dependencies>
<!-- 重写 Spring Data 系列版本 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在前面的示例中,我们指定了BOM,但是可以以相同的方式覆盖任何依赖关系类型。
使用Spring Boot Maven插件
Spring Boot需要包含Maven插件才可以将项目打包为可执行jar。如果要使用它,请将插件添加到您的<plugins>
部分,如以下示例所示:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
如果使用Spring Boot启动程序父pom,则只需添加插件。除非您要更改父级中定义的设置,否则无需对其进行配置。
启动器初学者
启动器是一组方便的依赖关系描述符,您可以在应用程序中包含这些描述符。您可以获得所需的所有Spring和相关技术的一站式服务,而无需查看示例代码和复制粘贴依赖描述。例如,如果要开始使用Spring和JPA进行数据库访问,请在项目中包含依赖项spring-boot-starter-data-jpa
即可。
启动器包含许多依赖项,这些依赖项是使项目快速启动和运行所需的依赖项,以及一组受支持的托管传递依赖项。
启动器名字
所有官方首发都遵循类似的命名模式: spring-boot-starter-*
,*
是特定类型的应用程序。此命名结构旨在帮助您找到启动器。许多IDE中的Maven集成允许您按名称搜索依赖项。例如,安装了适当的Eclipse或STS插件后,您可以按ctrl-space
组合键并在POM编辑器中输入“spring-boot-starter”搜索以获取完整列表。
第三方启动者不应该以spring-boot
开头,因为它是为官方Spring Boot工件保留的。相反,第三方启动器通常以项目名称开头。例如,一个名为的third-party-project
的第三方启动项目通常会命名为 third-party-project-spring-boot-starter
。
以下应用程序启动程序由Spring Boot在org.springframework.boot
组下提供 :
名称 | 描述 |
---|---|
spring-boot-starter |
核心启动器,包括自动配置支持,日志记录和YAML |
spring-boot-starter-activemq |
使用Apache ActiveMQ进行JMS消息传递的入门者 |
spring-boot-starter-amqp |
使用Spring AMQP和Rabbit MQ的入门者 |
spring-boot-starter-aop |
使用Spring AOP和AspectJ进行面向方面编程的入门者 |
spring-boot-starter-artemis |
使用Apache Artemis进行JMS消息传递的入门者 |
spring-boot-starter-batch |
使用Spring Batch的入门者 |
spring-boot-starter-cache |
使用Spring Framework的缓存支持的初学者 |
spring-boot-starter-cloud-connectors |
使用Spring Cloud Connectors的初学者简化了Cloud Foundry和Heroku等云平台中的服务连接 |
spring-boot-starter-data-cassandra |
使用Cassandra分布式数据库和Spring Data Cassandra的入门者 |
spring-boot-starter-data-cassandra-reactive |
使用Cassandra分布式数据库和Spring Data Cassandra Reactive的入门者 |
spring-boot-starter-data-couchbase |
使用Couchbase面向文档的数据库和Spring Data Couchbase的入门者 |
spring-boot-starter-data-couchbase-reactive |
使用Couchbase面向文档的数据库和Spring Data Couchbase Reactive的入门者 |
spring-boot-starter-data-elasticsearch |
使用Elasticsearch搜索和分析引擎以及Spring Data Elasticsearch的初学者 |
spring-boot-starter-data-jdbc |
使用Spring Data JDBC的入门者 |
spring-boot-starter-data-jpa |
将Spring Data JPA与Hibernate一起使用的初学者 |
spring-boot-starter-data-ldap |
使用Spring Data LDAP的入门者 |
spring-boot-starter-data-mongodb |
使用MongoDB面向文档的数据库和Spring Data MongoDB的初学者 |
spring-boot-starter-data-mongodb-reactive |
使用MongoDB面向文档的数据库和Spring Data MongoDB Reactive的入门者 |
spring-boot-starter-data-neo4j |
使用Neo4j图形数据库和Spring Data Neo4j的入门者 |
spring-boot-starter-data-redis |
在Spring Data Redis和Lettuce客户端上使用Redis键值数据存储的初学者 |
spring-boot-starter-data-redis-reactive |
使用带有Spring Data Redis被动的Redis键值数据存储和Lettuce客户端的入门者 |
spring-boot-starter-data-rest |
使用Spring Data REST通过REST公开Spring Data存储库的入门者 |
spring-boot-starter-data-solr |
在Spring Data Solr中使用Apache Solr搜索平台的初学者 |
spring-boot-starter-freemarker |
使用FreeMarker视图构建MVC Web应用程序的入门者 |
spring-boot-starter-groovy-templates |
使用Groovy模板视图构建MVC Web应用程序的入门者 |
spring-boot-starter-hateoas |
使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用程序的入门者 |
spring-boot-starter-integration |
使用Spring Integration的入门者 |
spring-boot-starter-jdbc |
将JDBC与HikariCP连接池一起使用的入门者 |
spring-boot-starter-jersey |
使用JAX-RS和Jersey构建RESTful Web应用程序的初学者。替代spring-boot-starter-web
|
spring-boot-starter-jooq |
使用jOOQ访问SQL数据库的初学者。替代spring-boot-starter-data-jpa 或spring-boot-starter-jdbc
|
spring-boot-starter-json |
阅读和写作json的初学者 |
spring-boot-starter-jta-atomikos |
使用Atomikos进行JTA交易的入门者 |
spring-boot-starter-jta-bitronix |
使用Bitronix进行JTA事务的入门者 |
spring-boot-starter-mail |
使用Java Mail和Spring Framework的电子邮件发送支持的入门者 |
spring-boot-starter-mustache |
使用Mustache视图构建Web应用程序的入门者 |
spring-boot-starter-oauth2-client |
使用Spring Security的OAuth2 / OpenID Connect客户端功能的入门者 |
spring-boot-starter-oauth2-resource-server |
使用Spring Security的OAuth2资源服务器功能的入门者 |
spring-boot-starter-quartz |
使用Quartz调度程序的入门者 |
spring-boot-starter-security |
使用Spring Security的入门者 |
spring-boot-starter-test |
使用JUnit,Hamcrest和Mockito等库来测试Spring Boot应用程序的初学者 |
spring-boot-starter-thymeleaf |
使用Thymeleaf视图构建MVC Web应用程序的入门者 |
spring-boot-starter-validation |
使用Java Bean Validation和Hibernate Validator的初学者 |
spring-boot-starter-web |
使用Spring MVC构建Web(包括RESTful)应用程序的入门者。使用Tomcat作为默认嵌入式容器 |
spring-boot-starter-web-services |
使用Spring Web Services的入门者 |
spring-boot-starter-webflux |
使用Spring Framework的Reactive Web支持构建WebFlux应用程序的初学者 |
spring-boot-starter-websocket |
使用Spring Framework的WebSocket支持构建WebSocket应用程序的初学者 |
本来官网长这样,但调格式太费劲了就去掉了后面的链接部分
后面的pom就是需要在pom导入时的内容,但这里没有添加,需要的可以进入 Spring Boot application starters搜索Table 13.1. Spring Boot application starters就会找到里面的内容,进入任意pom链接都会到github的pom.xml配置页面,根据需要复制即可。一般不需要进入,因为每次学习一个新的Spring Boot技术都有对应的starter或单独导入pom介绍。