构建系统
强烈建议你选择支持依赖性管理的构建系统,并且选择可以使用发布到"Maven Central"存储的依赖.我们建议你选择Maven或者Gradle。虽然可以让Spring Boot跟其他构建系统一起工作(例如:ant),但是它们不是最佳实践方案
依赖性管理
Spring Boot的每个版本都提供了它支持的依赖关系列表.在实践中,你不需要为你的配置中的任何依赖提供一个版本,因为Spring Boot已经管理它.当你升级Spring Boot本身时,这些依赖也会以一致的方式升级.
你仍然可以指定一个版本并覆盖Spring Boot的建议,如果你觉得有必要。
策划列表包含Spring Boot可以使用的所有spring模块以及第三方库的精选列表。 该列表可作为标准材料清单(Bills of Materials)(spring-boot-dependencies)使用,也可以使用Maven和Gradle的其他专用支持。
Spring Boot的每个版本都与Spring Framework的基本版本相关联,因此我们强烈建议您不要自行指定它的版本。
Maven
Maven用户可以从spring-boot-starter-parent项目继承以获取合理的默认值。 父项目提供以下功能:
- Java 1.6作为默认编译器级别.
- UTF-8源码编码。
- 依赖关系管理部分,允许您省略常见依赖关系的
标记(继承自spring-boot-dependencies POM)。 - 敏感资源过滤。
- 敏感的插件配置(exec插件,surefire,git commit Id,shade)
- application.properties和application.yml的特定profile文件的敏感资源过滤.(例如application-foo.properties and application-foo.yml)
最后一点:由于默认配置文件接受Spring样式占位符($ {...}),Maven过滤被改为使用@..@占位符(你可以用Maven属性resource.delimiter覆盖它)。
继承启动器父级
要将项目配置为继承spring-boot-starter-parent,只需设置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
</parent>
只需要指定此依赖关系上的Spring Boot版本号。 如果导入其他启动器,则可以安全地忽略版本号。
使用该设置,您还可以通过覆盖您自己的项目中的属性来覆盖各个依赖项。 例如,要升级到另一个Spring Data版本系列,您可以将以下内容添加到pom.xml中。
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>
检查spring-boot-dependenciespom以获取支持的属性列表。
使用Spring Boot而不使用parent POM
不是每个人都喜欢继承自spring-boot-starter-parent POM。 你可能有你需要使用的你自己的公司标准parent,或者你可能更喜欢显式声明所有的Maven配置。
如果你不想使用spring-boot-starter-parent,你仍然可以通过使用scope = import依赖关系来保持依赖关系管理(而不是插件管理)的好处:
<dependencyManagement>
<dependencies>
<dependency>
<!-- 从Spring Boot中导入依赖管理 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
该设置不允许您使用如上所述的属性覆盖各个依赖项。 要实现相同的结果,您需要在spring-boot-dependencies条目之前在项目的dependencyManagement中添加一个条目。 例如,要升级到另一个Spring Data版本系列,您可以将以下内容添加到pom.xml中。
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在上面的例子中,我们指定一个BOM,但是任何依赖类型都可以被覆盖。
更改java版本
spring-boot-starter-parent选择相当保守的Java兼容性。 如果你想遵循我们的建议,并使用更高的Java版本,你可以添加一个java.version属性:
<properties>
<java.version>1.8</java.version>
</properties>
使用Spring Boot的Maven插件
Spring Boot包括一个Maven插件,可以将项目打包为可执行jar。 如果您想使用插件,请将插件添加到
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
如果你使用Spring Boot启动器的parent pom,你只需要添加插件,没有必要配置它,除非你想改变parent定义的设置。 由于我本人使用maven,所以gradle和ant的翻译就不做了,有需要的话请查看官网
启动器(Starters)
启动器是一组方便的依赖关系描述,你可以将他们包含在应用中。你可以得到一个一站式的所有Spring以及跟它相关的技术,而不必通过复制黏贴示例代码中的依赖关系.例如,如果你想要开始使用Spring和JPA进行数据库访问,只需要在项目中包含spring-boot-starter-data-jpa依赖项,你就可以使用了.
启动器包含了许多依赖项,你需要这些依赖项来快速创建和运行项目,并使用一致的受支持的传递依赖关系集.
名称中有什么? 所有官方启动器都遵循类似的命名模式; spring-boot-starter- ,其中是特定类型的应用程序。这种命名结构旨在帮助你需要找到一个启动器时,能够快速查找( 许多IDE中的Maven集成允许您按名称搜索依赖项。).例如,在安装了适当的Eclipse或者STS插件后,你可以简单地在pom编辑器中输入ctrl-space并输入"spring-boot-starter"获得完整列表. 如创建自己的启动器部分中所述,第三方启动器不应该以spring-boot开头,因为它保留用于官方的Spring启动工件.例如, acme的第三方启动器通常命名为acme-spring-boot-starter。
以下应用程序启动器由Spring Boot在org.springframework.boot组下提供:
名称 | 描述 | Pom |
---|---|---|
spring-boot-starter-thymeleaf | 使用Thymeleaf视图构建MVC Web应用程序 | Pom |
spring-boot-starter-data-couchbase | 使用Couchbase面向文档的数据库和Spring Data Couchbase | Pom |
spring-boot-starter-artemis | 使用Apache Artemis的JMS消息中间件 | Pom |
spring-boot-starter-web-services | 使用Spring web service | Pom |
spring-boot-starter-mail | 使用Java Mail和Spring Framework的邮件发送的支持 | Pom | |
spring-boot-starter-data-redis | 使用spring data redis和jdeis client进行redis键值对数据存储 | Pom |
spring-boot-starter-web | 使用spring boot构建web,包括RESTful.使用tomcate作为默认嵌入式容器 | Pom |
spring-boot-starter-data-gemfire | 使用GemFire分布式数据存储和Spring Data GemFire | Pom |
spring-boot-starter-activemq | 使用Apache ActiveMQ做jms消息传输 | 【Pom](https://github.com/spring-projects/spring-boot/tree/master/spring-boot-starters/spring-boot-starter-activemq/pom.xml) | |
spring-boot-starter-data-elasticsearch | 使用Elasticsearch搜索和分析引擎和Spring Data Elasticsearch | Pom |
spring-boot-starter-integration | 使用Spring Integration | Pom | |
spring-boot-starter-test | 使用包括JUnit,Hamcrest和Mockito的库来测试Spring Boot应用程序 | Pom |
spring-boot-starter-jdbc | 使用JDBC与Tomcat JDBC连接池 | Pom | |
spring-boot-starter-mobile | 使用Spring Mobile构建Web应用程序 | Pom |
spring-boot-starter-validation | 使用Java Bean验证与Hibernate验证程序 | Pom |
spring-boot-starter-hateoas | 使用Spring MVC和Spring HATEOAS构建基于hypermedia-based的RESTful Web应用程序 | Pom |
spring-boot-starter-jersey | 使用JAX-RS和Jersey构建RESTful Web应用程序。 spring-boot-starter-web的替代品 | Pom |
spring-boot-starter-data-neo4j | 使用Neo4j图数据库和Spring Data Neo4j | Pom |
spring-boot-starter-websocket | 使用Spring Framework的WebSocket支持构建WebSocket应用程序 | Pom |
spring-boot-starter-aop | 面向切面的编程与Spring AOP和AspectJ | Pom | |
spring-boot-starter-amqp | 使用Spring AMQP和Rabbit MQ | Pom |
spring-boot-starter-data-cassandra | 使用Cassandra分布式数据库和Spring Data Cassandra | Pom |
spring-boot-starter-social-facebook | 使用Spring Social Facebook | Pom |
spring-boot-starter-jta-atomikos | 使用Atomikos的JTA事务 | Pom |
spring-boot-starter-security | 使用Spring Security | Pom |
spring-boot-starter-mustache | 使用Mustache视图构建MVC Web应用程序 | Pom |
spring-boot-starter-data-jpa | 使用Spring Data JPA和Hibernate | Pom |
spring-boot-starter | 核心启动器,包括自动配置支持,日志记录和YAML | Pom |
spring-boot-starter-groovy-templates | 使用Groovy模板视图构建MVC Web应用程序 | Pom |
spring-boot-starter-freemarker | 使用FreeMarker视图构建MVC Web应用程序 | Pom |
spring-boot-starter-batch | 使用Spring Batch | Pom |
spring-boot-starter-social-linkedin | 使用Spring Social LinkedIn | Pom |
spring-boot-starter-cache | 使用Spring Framework缓存支持 | Pom |
spring-boot-starter-data-solr | 使用带有Spring Data Solr的Apache Solr搜索平台 | Pom |
spring-boot-starter-data-mongodb | 使用MongoDB(面向文档的数据库)和Spring Data MongoDB | Pom |
spring-boot-starter-jooq | 使用jOOQ访问SQL数据库。 spring-boot-starter-data-jpa或spring-boot-starter-jdbc的替代方法 | Pom |
spring-boot-starter-jta-narayana | Spring Boot Narayana JTA 启动器 | Pom |
spring-boot-starter-cloud-connectors | 使用Spring Cloud连接器,这简化了连接到云平台中的服务,如Cloud Foundry和Heroku | Pom |
spring-boot-starter-jta-bitronix | 使用bitronix的jta事务 | Pom |
spring-boot-starter-social-twitter | 使用Spring Social Twitter | Pom |
spring-boot-starter-data-rest | 使用Spring Data REST,通过REST暴露Spring数据存储库 | Pom |
除了应用启动器,以下启动器可用于添加生产就绪(production ready)功能:
名称 | 描述 | Pom |
---|---|---|
spring-boot-starter-actuator | 使用Spring Boot Actuator提供生产就绪功能,以帮助您监视和管理您的应用程序 | Pom |
最后,Spring Boot还包括一些可以排除或交换特定的技术的启动器:
名称 | 描述 | Pom |
---|---|---|
spring-boot-starter-undertow | 使用Undertow作为嵌入式servlet容器。 spring-boot-starter-tomcat的替代品 | Pom |
spring-boot-starter-jetty | 使用Jetty作为嵌入式servlet容器。 spring-boot-starter-tomcat的替代品 | Pom |
spring-boot-starter-logging | 使用Logback进行日志记录。 默认日志启动器 | Pom |
spring-boot-starter-tomcat | 使用Tomcat作为嵌入式servlet容器。 spring-boot-starter-web使用的缺省servlet容器启动器 | Pom |
spring-boot-starter-log4j2 | 使用Log4j2进行日志记录。 spring-boot-starter-logging的替代方法 | Pom |
有关其他社区提供的启动器的列表,请参阅GitHub上spring-boot-startters模块中的README文件。