強烈建議你選擇一個支持依賴管理的構建系統,而且可使用發佈到「Maven中心」存儲庫的工件。咱們建議你選擇Maven或Gradle,可讓Spring Boot與其餘構建系統(例如Ant)一塊兒工做,可是它們並非特別受支持。html
Spring Boot的每個版本都提供了它所支持的一個被整理的依賴項列表,實際上,在構建配置中,你不須要爲這些依賴項提供一個版本,由於Spring Boot爲你管理這些依賴項,當你升級Spring Boot自己時,這些依賴項也會以一致的方式升級。java
若是須要,你仍然能夠指定一個版本並覆蓋Spring Boot的建議。
通過管理的列表包含全部spring模塊,你可使用spring Boot以及一個通過細化的第三方庫列表,這個列表能夠做爲一個標準的材料清單(spring-boot-dependencies
),它能夠與Maven和Gradle一塊兒使用。react
Spring Boot的每一個版本都與Spring框架的一個基本版本相關聯,咱們強烈建議你不要指定它的版本。
Maven用戶能夠從spring-boot-starter-parent
項目繼承來得到合理的默認值,父項目提供瞭如下特性:git
spring-boot-dependencies
pom,管理通用依賴項的版本,這個依賴項管理容許你在本身的pom中使用這些依賴項時省略<版本>標記。application.properties
和指定屬性的文件的application.yml
(例如,application-dev.properties
和application-dev.yml
) 的合理資源過濾。注意,因爲application.properties
和application.yml
文件接受Spring樣式的佔位符(${…}
),Maven過濾被更改成使用@..@
佔位符。(你能夠經過設置一個名爲resource.delimiter
的Maven屬性來覆蓋它。)github
要將你的項目配置爲從spring-boot-starter-parent
繼承,請將parent
設置爲:web
<!-- Inherit defaults from Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> </parent>
你應該僅在此依賴項上指定Spring Boot版本號,若是你導入額外的啓動器,你能夠安全地省略版本號。
經過這種設置,你還能夠經過在本身的項目中覆蓋一個屬性來覆蓋單個依賴項。例如,要升級到另外一個Spring Data release train,你須要將如下內容添加到你的pom.xml
:redis
<properties> <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version> </properties>
檢查 spring-boot-dependencies pom,以得到支持的屬性列表。
並非每一個人都喜歡從spring-booot-starter-parent
POM繼承,你可能有你本身的企業標準父類,你須要使用它們,或者你可能傾向於顯式地聲明全部的Maven配置。spring
若是你不想使用spring-boot-starter-parent
,那麼你仍然可使用scope=import
依賴項來保持依賴管理(但不是插件管理)的好處:mongodb
<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.0.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
前面的示例設置不容許你使用屬性來覆蓋單個依賴項,如上所述。爲了達到一樣的結果,在spring-boot-dependencies
進入以前,須要對你的項目dependencyManagement
添加一個條目。例如,要升級到另外一個Spring Data release train,你能夠將如下元素添加到你的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> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.0.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
在前面的示例中,咱們指定了一個BOM,可是任何依賴類型均可以以相同的方式被覆蓋。
Spring Boot包括一個Maven插件,它能夠將項目打包爲可執行jar,若是你想要使用它,請將插件添加到你的<plugins>
部分,以下面的示例所示:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
若是你使用Spring Boot starter parent pom,你只須要添加插件,不須要對其進行配置,除非你想更改parent中定義的設置。
要了解使用Gradle的Spring Boot,請參考Spring Boot的Gradle插件的文檔:
可使用Apache Ant+Ivy構建Spring Boot項目,spring-boot-antlib
「AntLib」模塊也可用來幫助Ant建立可執行的jar。
聲明依賴關係,典型的ivy.xml
文件看起來像是下面的例子:
<ivy-module version="2.0"> <info organisation="org.springframework.boot" module="spring-boot-sample-ant" /> <configurations> <conf name="compile" description="everything needed to compile this module" /> <conf name="runtime" extends="compile" description="everything needed to run this module" /> </configurations> <dependencies> <dependency org="org.springframework.boot" name="spring-boot-starter" rev="${spring-boot.version}" conf="compile" /> </dependencies> </ivy-module>
一個典型的buld.xml
看起來像是下面的例子:
<project xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:spring-boot="antlib:org.springframework.boot.ant" name="myapp" default="build"> <property name="spring-boot.version" value="2.0.5.RELEASE" /> <target name="resolve" description="--> retrieve dependencies with ivy"> <ivy:retrieve pattern="lib/[conf]/[artifact]-[type]-[revision].[ext]" /> </target> <target name="classpaths" depends="resolve"> <path id="compile.classpath"> <fileset dir="lib/compile" includes="*.jar" /> </path> </target> <target name="init" depends="classpaths"> <mkdir dir="build/classes" /> </target> <target name="compile" depends="init" description="compile"> <javac srcdir="src/main/java" destdir="build/classes" classpathref="compile.classpath" /> </target> <target name="build" depends="compile"> <spring-boot:exejar destfile="build/myapp.jar" classes="build/classes"> <spring-boot:lib> <fileset dir="lib/runtime" /> </spring-boot:lib> </spring-boot:exejar> </target> </project>
若是你不想使用
spring-boot-antlib
模塊,請參見第87.9節,「從Ant構建一個可執行的存檔,而不使用spring-boot-antlib」 「How-to」。
Starters是一組方便的依賴描述符,你能夠將它們包括在應用程序中,你能夠得到所需的全部Spring和相關技術的一站式服務,而無需搜索示例代碼和複製粘貼依賴描述符的負載。例如,若是你想要開始使用Spring和JPA進行數據庫訪問,請在項目中包含Spring-boot-starter-data-JPA
依賴項。
starters包含大量的依賴項,你須要經過一個一致的、受支持的管理傳遞依賴集來快速地啓動項目並運行。
叫什麼名稱
全部官方 starters都遵循相似的命名模式;
spring-boot-starter-*
,其中*
是一種特殊類型的應用程序。這種命名結構旨在幫助你找到一個starter,許多IDE中的Maven集成讓你能夠經過名稱搜索依賴項。例如,若是安裝了適當的Eclipse或STS插件,你能夠在POM編輯器中按下ctrl-space
,並在一個完整的列表中鍵入「spring-boot-starter」。正如在「建立你本身的starter」部分中所解釋的,第三方starter不該該從
Spring-Boot
開始,由於它是爲官方Spring Boot工件預留的。相反,第三方starter一般以項目的名稱開始,例如,一個名爲thirdpartyproject
的第三方啓動項目一般會被命名爲thirdpartyproject-spring-boot-starter
。
下列應用程序starter由org.springframework.boot
組下的Spring Boot提供:
表13.1. Spring Boot應用程序starter
名稱 | 描述 | Pom |
---|---|---|
spring-boot-starter |
核心啓動器,包括自動配置支持,日誌記錄和YAML | Pom |
spring-boot-starter-activemq |
使用Apache ActiveMQ的JMS消息傳遞啓動器 | Pom |
spring-boot-starter-amqp |
使用Spring AMQP和Rabbit MQ的啓動器 | Pom |
spring-boot-starter-aop |
使用Spring AOP和AspectJ進行面向切面編程的啓動器 | Pom |
sspring-boot-starter-artemis |
使用Apache Artemis的JMS消息傳遞啓動器 | Pom |
spring-boot-starter-batch |
使用Spring batch的啓動器 | Pom |
spring-boot-starter-cache |
使用Spring框架緩存支持的啓動器 | Pom |
spring-boot-starter-cloud-connectors |
使用Spring Cloud鏈接器,它簡化了鏈接到雲平臺的服務,如Cloud Foundry和Heroku | Pom |
spring-boot-starter-data-cassandra |
使用Cassandra分佈式數據庫和Spring Data Cassandra的啓動器 | Pom |
spring-boot-starter-data-cassandra-reactive |
使用Cassandra分佈式數據庫和Spring Data Cassandra Reactive的啓動器 | Pom |
spring-boot-starter-data-couchbase |
使用Couchbase面向文檔的數據庫和Spring Data Couchbase的啓動器 | Pom |
spring-boot-starter-data-couchbase-reactive |
使用Couchbase面向文檔的數據庫和Spring Data Couchbase Reactive的啓動器 | Pom |
spring-boot-starter-data-elasticsearch |
使用Elasticsearch搜索和分析引擎與Spring Data Elasticsearch的啓動器 | Pom |
spring-boot-starter-data-jpa |
使用Hibernate的Spring Data JPA啓動器 | Pom |
spring-boot-starter-data-ldap |
使用Spring Data LDAP的啓動器 | Pom |
spring-boot-starter-data-mongodb |
使用MongoDB面向文檔數據庫和Spring Data MongoDB的啓動器 | Pom |
spring-boot-starter-data-mongodb-reactive |
使用MongoDB面向文檔數據庫和Spring Data MongoDB Reactive的啓動器 | Pom |
spring-boot-starter-data-neo4j |
使用Neo4j圖形數據庫和Spring Data Neo4j的啓動器 | Pom |
spring-boot-starter-data-redis |
使用Redis鍵值數據存儲和Spring Data Redis和Lettuce客戶端的啓動器 | Pom |
spring-boot-starter-data-redis-reactive |
使用Redis鍵值數據存儲和Spring Data Redis Reactive和Lettuce客戶端的啓動器 | Pom |
spring-boot-starter-data-rest |
使用Spring Data REST公開Spring Data存儲庫的啓動器 | Pom |
spring-boot-starter-data-solr |
使用Spring Data Solr的Apache Solr搜索平臺的啓動器 | Pom |
spring-boot-starter-freemarker |
使用FreeMarker視圖構建MVC web應用程序的啓動器 | Pom |
spring-boot-starter-groovy-templates |
使用Groovy模板視圖構建MVC web應用程序的啓動器 | Pom |
spring-boot-starter-hateoas |
使用Spring MVC和Spring HATEOAS構建基於超媒體的RESTful web應用程序的啓動器 | Pom |
spring-boot-starter-integration |
使用Spring Integration的啓動器 | Pom |
spring-boot-starter-jdbc |
使用JDBC與HikariCP鏈接池的啓動器 | Pom |
spring-boot-starter-jersey |
使用JAX-RS和Jersey構建基於RESTful的web應用程序的啓動器,另外一種選擇spring-boot-starter-web |
Pom |
spring-boot-starter-jooq |
使用jOOQ訪問SQL數據庫的啓動器,另外一種選擇是spring-boot-starter-data-jpa 或spring-boot-starter-jdbc |
Pom |
spring-boot-starter-json |
閱讀和編寫json的啓動器 | Pom |
spring-boot-starter-jta-atomikos |
使用Atomikos的JTA事務的啓動器 | Pom |
spring-boot-starter-jta-bitronix |
使用Bitronix的JTA事務的啓動器 | Pom |
spring-boot-starter-jta-narayana |
使用Narayana的JTA事務的啓動器 | Pom |
spring-boot-starter-mail |
使用Java Mail和Spring框架的email發送支持的啓動器 | Pom |
spring-boot-starter-mustache |
使用Mustache視圖構建web應用程序的啓動器 | Pom |
spring-boot-starter-quartz |
使用Quartz調度器的啓動器 | Pom |
spring-boot-starter-security |
使用Spring Security的啓動器 | Pom |
spring-boot-starter-test |
使用包括JUnit、Hamcrest和Mockito來測試Spring Boot 應用程序的啓動器 | Pom |
spring-boot-starter-thymeleaf |
使用Thymeleaf視圖構建MVC web應用程序的啓動器 | Pom |
spring-boot-starter-validation |
使用Hibernate驗證器驗證Java Bean的啓動器 | Pom |
spring-boot-starter-web |
使用Spring MVC構建web(包括RESTful)應用程序的啓動器,使用Tomcat做爲默認的嵌入式容器 | Pom |
spring-boot-starter-web-services |
使用Spring Web Services的啓動器 | Pom |
spring-boot-starter-webflux |
使用Spring框架的Reactive Web支持構建WebFlux應用程序的啓動器 | Pom |
spring-boot-starter-websocket |
使用Spring框架的WebSocket支持構建WebSocket應用程序的啓動器 | Pom |
除了應用程序starter以外,下面的啓動器還能夠用於添加生產就緒特性:
表13.2. Spring Boot生產starter
名稱 | 描述 | Pom |
---|---|---|
spring-boot-starter-actuator |
使用Spring Boot Actuator提供生產就緒特性,幫助你監視和管理應用程序的啓動器 | Pom |
最後,Spring Boot還包括如下啓動器,若是你想要排除或交換特定的技術方面,可使用:
表13.3.Spring boot技術型的啓動器
名稱 | 描述 | Pom |
---|---|---|
spring-boot-starter-jetty |
使用Jetty做爲嵌入式servlet容器的啓動器,替代spring-boot-starter-tomcat |
Pom |
spring-boot-starter-log4j2 |
使用Log4j2進行日誌記錄的啓動器,替代spring-boot-starter-logging |
Pom |
spring-boot-starter-logging |
使用Logback進行日誌記錄的啓動器,默認的日誌起動器 | Pom |
spring-boot-starter-reactor-netty |
使用Reactor Netty做爲嵌入式reactive HTTP服務器的啓動器 | Pom |
spring-boot-starter-tomcat |
使用Tomcat做爲嵌入式servlet容器的啓動器,默認的servlet容器啓動器使用spring-boot-starter-web | Pom |
spring-boot-starter-undertow |
使用Undertow做爲嵌入式servlet容器的啓動器,替代spring-boot-starter-tomcat |
Pom |
對於一個附加的社區貢獻starter列表,請參閱GitHub上的
spring-boot-starters
模塊中的
README文件。