1.5.2.RELEASE
本節簡要介紹了Spring Boot文檔,是整個文檔的參考指南。 您可以完整閱讀本參考指南,或者如果您不感興趣的話可以跳過該部分。
Spring Boot參考指南可以以?html,pdf?和?epub?文檔的形式獲取。文檔, 最新版本的文檔可在http://docs.spring.io/spring-boot/docs/current/reference?中找到。
本文檔您可以自己使用,或發布給別人,印刷版還是以電子形式都可以,但必須包含本版權聲明,不可進行盈利。
如果使用 Spring Boot 時遇到問題,可以在下面獲取幫助:
Spring Boot 所有的東西都是開源的,包括文檔! 如果您發現文檔有問題; 或者如果你想改進他們,歡迎參與。
如果你剛剛開始使用 Spring Boot,或剛剛開始使用“Spring”,請從這里開始!
需要有關Spring Boots核心功能的更多細節?請看這里
當您準備好將Spring Boot 應用程序放到生產環境時,我們有一些您可能會喜歡的技巧!
如果你剛剛開始使用Spring Boot,這是你的一部分內容! 在這里我們將會回答一些基本的what?”, “how?” 和 “why?”的問題。 在這里你會找到一個詳細的介紹Spring Boot和安裝說明。 然后,我們將構建我們的第一個Spring Boot應用程序,并討論一些核心原則。
Spring Boot可以基于Spring輕松創建可以“運行”的、獨立的、生產級的應用程序。 對Spring平臺和第三方類庫我們有一個自己看法,所以你最開始的時候不要感到奇怪。 大多數Spring Boot應用程序需要很少的Spring配置。
您可以使用Spring Boot創建可以使用java -jar或傳統 war 包部署啟動的Java應用程序。 我們還提供一個運行“spring腳本”的命令行工具。
我們的主要目標是:
默認情況下,Spring Boot 1.5.2.RELEASE需要Java 7和Spring Framework 4.3.7.RELEASE或更高版本。 您可以進行一些其他配置在Java 6上使用Spring Boot。 有關詳細信息,請參見第84.11節“如何使用Java 6”。 為Maven(3.2+)和Gradle 2(2.9或更高版本)和3提供了顯式構建支持。
雖然您可以在Java 6或7上使用 Spring Boot,但我們通常推薦Java 8。
以下嵌入式servlet容器可以直接使用:
名稱 | Servlet 版本 | Java 版本 |
---|---|---|
Tomcat 8 | 3.1 | Java 7+ |
Tomcat 7 | 3.0 | Java 6+ |
Jetty 9.3 | 3.1 | Java 8+ |
Jetty 9.2 | 3.1 | Java 7+ |
Jetty 8 | 3.0 | Java 6+ |
Undertow 1.3 | 3.1 | Java 7+ |
您還可以將Spring Boot應用程序部署到任何兼容Servlet 3.0+ 的容器中。
Spring Boot可以與“經典(classic)”Java開發工具一起使用或作為命令行工具安裝。 無論如何,您將需要Java SDK v1.6或更高版本。 在開始之前檢查當前的Java安裝:
|
|
如果您是Java開發的新手,或者您只想嘗試一下 Spring Boot,您可能需要首先嘗試使用?Spring Boot CLI,如果想正式使用Spring Boot,請閱讀“經典(classic)”安裝說明。
雖然Spring Boot 與Java 1.6兼容,但我們建議使用最新版本的Java。
Spring Boot的使用方式與標準Java庫的使用相同,只需在類路徑中包含適當的spring-boot-*.jar文件。Spring Boot不需要任何特殊的集成工具,所以可以使用任何IDE或文本編輯器進行開發;并且Spring Boot 應用程序沒有什么特殊的地方,因此您可以像其他Java程序一樣運行和調試。雖然您可以直接復制Spring Boot 的jar包,但我們通常建議您使用依賴關系管理的構建工具(如Maven或Gradle)。
Spring Boot 兼容 Apache Maven 3.2。 如果您還沒有安裝Maven,可以按照?https://maven.apache.org/?上的說明進行安裝。
在許多操作系統上,Maven可以通過軟件包管理器進行安裝。 如果您是OSX Homebrew用戶,請嘗試使用命令:brew install maven。 Ubuntu用戶可以運行命令:sudo apt-get install maven。
Spring Boot 依賴 org.springframework.boot groupId。通常,您的Maven POM文件將從 spring-boot-starter-parent 項目繼承,并聲明一個或多個“啟動器(啟動器)”的依賴關系。Spring Boot還提供了一個可選的Maven插件來創建可執行的jar包。
典型的pom.xml文件:
|
|
spring-boot-starter-parent是使用Spring Boot的一個很好的方式,但它并不是所有的時候都適合。有時您可能需要從不同的父POM繼承,或者您可能不喜歡我們的默認設置。 請參見第13.2.2節“使用不帶父POM的Spring Boot”作為使用導入作用域(import scope)的替代解決方案。
Spring Boot 兼容 Gradle 2(2.9或更高版本)和Gradle 3。如果您尚未安裝Gradle,您可以按照http://www.gradle.org/?上的說明進行操作。
可以使用org.springframework.boot 組(group)聲明Spring Boot 的依賴項。 通常,您的項目將聲明一個或多個“啟動器(Starters)”的依賴。Spring Boot提供了一個有用的Gradle插件,可用于簡化依賴關系聲明和創建可執行 jar包。
Gradle Wrapper
當您需要構建項目時,Gradle Wrapper提供了一種“獲取(obtaining)”Gradle的更好的方式。 它是一個小腳本和庫,它與代碼一起引導構建過程。 有關詳細信息,請參閱https://docs.gradle.org/2.14.1/userguide/gradle_wrapper.html?。
典型的 build.gradle 文件:
|
|
Spring Boot CLI是一個命令行工具,如果要使用Spring快速原型(quickly prototype),可以使用它。 它允許您運行Groovy腳本,這意味著會有您熟悉的類似Java的語法,沒有太多的樣板代碼(boilerplate code)。
您也不必要通過CLI來使用Spring Boot,但它絕對是開始Spring應用程序最快方法。
您可以從Spring軟件版本庫下載Spring CLI發行版:
各發布版本的快照。
下載完成后,請按照解壓縮后文件中的INSTALL.txt的說明進行操作。 總而言之:在.zip文件的bin/目錄中有一個spring腳本(Windows的spring.bat),或者你可以使用java -jar(腳本可以幫助您確保類路徑設置正確)。
SDKMAN!(軟件開發套件管理器)可用于管理各種二進制SDK的多個版本,包括Groovy和Spring Boot CLI。從http://sdkman.io/?獲取SDKMAN!并安裝Spring Boot。
|
|
如果您正在開發CLI的功能,并希望輕松訪問剛創建的版本,請遵循以下額外說明。
|
|
這將安裝一個稱為dev的spring的本地實例(instance)。 它指向您構建位置的target,所以每次重建(rebuild)Spring Boot時,Spring 將是最新的。
你可以看到:
|
|
如果您在Mac上使用?Homebrew,安裝Spring Boot CLI 只需要下面命令:
|
|
Homebrew會將Spring 安裝到 /usr/local/bin。
如果您沒有看到公式(formula),您的安裝可能會過期。 只需執行brew更新,然后重試。
如果您在Mac上使用?MacPorts,安裝Spring Boot CLI 只需要下面命令:
|
|
Spring Boot CLI為BASH和zsh shell提供命令補全的功能。 您可以在任何shell中引用腳本(也稱為spring),或將其放在您的個人或系統范圍的bash完成初始化中。 在Debian系統上,系統范圍的腳本位于 /shell-completion/bash 中,當新的shell啟動時,該目錄中的所有腳本將被執行。 手動運行腳本,例如 如果您使用SDKMAN安裝了!
|
|
如果使用Homebrew或MacPorts安裝Spring Boot CLI,則命令行補全腳本將自動注冊到您的shell。
這是一個非常簡單的Web應用程序,可用于測試您的安裝是否正確。 創建一個名為app.groovy的文件:
|
|
然后從shell運行它:
|
|
因為下載依賴的庫,首次運行應用程序需要一些時間,。 后續運行將會更快。
在瀏覽器中打開?http://localhost:8080?,您應該會看到以下輸出:
|
|
如果您從早期版本的 Spring Boot 升級,請檢查項目wiki上托管的“發行說明”。 您將找到升級說明以及每個版本的“新的和值得注意的”功能的列表。
要升級現有的CLI安裝,請使用包管理工具相應的package manager命令(例如brew upgrade),如果您手動安裝了CLI,請按照標準說明記住更新PATH環境變量以刪除任何舊的引用。
讓我們在Java中開發一個簡單的“Hello World!”Web應用程序,突顯Spring Boot一些主要的功能。 我們將使用Maven構建該項目,因為大多數IDE支持它。
https://spring.io/?包含許多使用Spring Boot的“入門指南”。 如果您正在尋求解決一些具體問題; 可以先看一下那里。
您可以在?https://start.spring.io/?的依賴關系搜索器中選擇Web啟動器來快速完成以下步驟。
這會自動生成一個新的項目結構,方便您立即開始編碼。 查看文檔了解更多詳細信息。
在開始之前,打開終端來檢查您是否安裝了有效的Java和Maven版本。
|
|
這個示例需要在其自己的文件夾中創建。 后面我們假設您在當前目錄已經創建了一個正確的文件夾。
我們需要先創建一個Maven pom.xml文件。 pom.xml是用于構建項目的配置文件。打開編輯器并添加以下內容:
|
|
這應該給你一個工作構建(working build),你可以通過運行 mvn package 進行測試(你可以暫時忽略警告:“jar will be empty - no content was marked for inclusion!”)。
現在,您可以將項目導入到IDE中(最新的Java IDE內置對Maven的支持)。 為了簡單起見,這個示例我們繼續使用純文本編輯器。
Spring Boot提供了一些“啟動器(Starters)”,可以方便地將jar添加到類路徑中。我們的示例應用程序已經在POM的父部分使用了spring-boot-starter-parent。spring-boot-starter-parent是一個特殊啟動器,提供一些Maven的默認值。它還提供依賴管理?dependency-management?標簽,以便您可以省略子模塊依賴關系的版本標簽。
其他“啟動器(Starters)”只是提供您在開發特定類型的應用程序時可能需要的依賴關系。 由于我們正在開發Web應用程序,所以我們將添加一個spring-boot-starter-web依賴關系,但在此之前,我們來看看我們目前的依賴。
|
|
mvn dependency:tree:打印項目依賴關系的樹形表示。 您可以看到spring-boot-starter-parent本身不在依賴關系中。 編輯pom.xml并在 parent 下添加spring-boot-starter-web依賴關系:
|
|
如果您再次運行 mvn dependency:tree ,您將看到現在有許多附加依賴關系,包括Tomcat Web服務器和Spring Boot本身。
要完成我們的應用程序,我們需要創建一個的Java文件。 默認情況下,Maven將從src/main/java編譯源代碼,因此您需要創建該文件夾結構,然后添加一個名為src/main/java/Example.java的文件:
|
|
雖然這里沒有太多的代碼,但是有一些重要的部分。
我們的Example類的第一個注解是@RestController。 這被稱為 stereotype annotation。它為人們閱讀代碼提供了一些提示,對于Spring來說,這個類具有特定的作用。在這里,我們的類是一個web @Controller,所以Spring在處理傳入的Web請求時會考慮這個類。
@RequestMapping注解提供“路由”信息。 告訴Spring,任何具有路徑“/”的HTTP請求都應映射到home方法。 @RestController注解告訴Spring將生成的字符串直接返回給調用者。
@RestController和@RequestMapping注解是Spring MVC 的注解(它們不是Spring Boot特有的)。 有關更多詳細信息,請參閱Spring參考文檔中的MVC部分。
第二個類級別的注釋是@EnableAutoConfiguration。 這個注解告訴 Spring Boot 根據您添加的jar依賴關系來“猜(guess)”你將如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,自動配置將假定您正在開發Web應用程序并相應地配置Spring。
啟動器和自動配置
自動配置旨在與“起動器”配合使用,但兩個概念并不直接相關。 您可以自由選擇啟動器之外的jar依賴項,Spring Boot仍然會自動配置您的應用程序。
我們的應用程序的最后一部分是main()方法。 這只是一個遵循Java慣例的應用程序入口點的標準方法。 我們的main()方法通過調用run()委托(delegates)給Spring Boot的SpringApplication類。 SpringApplication將引導我們的應用程序,啟動Spring,然后啟動自動配置的Tomcat Web服務器。 我們需要將Example.class作為一個參數傳遞給run方法來告訴SpringApplication,它是主要的Spring組件。 還傳遞了args數組以傳遞命令行參數。
由于我們使用了spring-boot-starter-parent POM,所以我們有一個可用的運行目標,我們可以使用它來啟動應用程序。 鍵入mvn spring-boot:從根目錄運行以啟動應用程序:
|
|
如果你用瀏覽器打開?http://localhost:8080?你應該看到以下輸出:
|
|
ctrl-c 正常(gracefully)退出應用程序。
讓我們完成我們的例子,創建一個完全自包含的可執行jar文件,我們可以在生產環境中運行。 可執行的jar(有時稱為“fat jars”)是包含編譯的類以及代碼運行所需要的所有jar包依賴的歸檔(archives)。
可執行jar和Java
Java不提供任何標準的方法來加載嵌套的jar文件(即本身包含在jar中的jar文件)。 如果您正在尋找可以發布自包含的應用程序,這可能是有問題的。
為了解決這個問題,許多開發人員使用“uber” jars。 一個uber jar簡單地將所有類、jar包進行檔案。 這種方法的問題是,很難看到您在應用程序中實際使用哪些庫。 如果在多個jar中使用相同的文件名(但具有不同的內容),也可能會出現問題。
Spring Boot采用一個不同的方法這樣可以直接對jar進行嵌套。
要創建可執行的jar,我們需要將spring-boot-maven-plugin添加到我們的pom.xml中。 在下方插入以下行:
|
|
spring-boot-starter-parent POM 包括綁定重新包裝目標的?配置。 如果您不使用該父POM,您將需要自己聲明此配置。 有關詳細信息,請參閱插件文檔。
保存您的pom.xml并從命令行運行 mvn package:
|
|
如果你看看target目錄,你應該看到myproject-0.0.1-SNAPSHOT.jar。 該文件的大小約為10 MB。 如果你想查看里面,可以使用jar tvf:
|
|
您還應該在target目錄中看到一個名為myproject-0.0.1-SNAPSHOT.jar.original的較小文件。 這是Maven在Spring Boot重新打包之前創建的原始jar文件。
使用java -jar命令運行該應用程序:
|
|
像之前一樣,ctrl+c正常退出應用程序。
希望本節能為您提供一些Spring Boot基礎知識,并讓您準備編寫自己的應用程序。 如果你是一個面向具體任務的開發人員,你可能想跳過?https://spring.io/?,看看一些解決具體的“如何用Spring”問題的入門指南; 我們還有Spring Boot-specific?How-to參考文檔。
Spring Boot庫還有一大堆可以運行的示例。 示例與代碼的其余部分是獨立的(這樣您不需要構建多余的代碼來運行或使用示例)。
下一個是第三部分“使用 Spring Boot”。 如果你真的沒有這個耐心,也可以跳過去閱讀Spring Boot功能。
本部分將詳細介紹如何使用Spring Boot。 這部分涵蓋諸如構建系統,自動配置以及如何運行應用程序等主題。 我們還介紹了一些Spring Boot的最佳實踐(best practices)。 雖然Spring Boot沒有什么特殊之處(它只是一個可以使用的庫),但是有一些建議可以讓您的開發過程更容易一些。
如果您剛剛開始使用Spring Boot,那么在深入本部分之前,您應該閱讀入門指南。
強烈建議您選擇一個支持依賴管理并可以使用“Maven Central”存儲庫的構建系統。 我們建議您選擇Maven或Gradle。 Spring Boot 可以與其他構建系統(例如 Ant )配合使用,但是它們不會得到很好的支持。
每個版本的Spring Boot提供了一個它所支持的依賴關系列表。 實際上,您不需要為構建配置文件中的這些依賴關系提供版本,因為Spring Boot會為您進行管理這些依賴的版本。 當您升級Spring Boot本身時,這些依賴關系也將以一致的進行升級。
如果您覺得有必要,您仍然可以指定一個版本并覆蓋Spring Boot建議的版本。
管理的列表中包含可以使用Spring Boot的所有Spring模塊以及第三方庫的精簡列表。 該列表可作為標準的物料(Materials)清單(spring-boot-dependencies)使用,并且還提供了對?Maven?和?Gradle?的額外支持。
Spring Boot的每個版本與Spring Framework的基本版本相關聯,因此我們強烈建議您不要自己指定其版本。
Maven用戶可以從 spring-boot-starter-parent-parent 項目中繼承,以獲得合理的默認值。 父項目提供以下功能:
要將項目配置為繼承spring-boot-starter-parent,只需設置標簽如下:
|
|
您只需要在此依賴項上指定Spring Boot版本號。 如果您導入其他起始器,則可以放心地省略他們的版本號。
通過該設置,您還可以通過覆蓋自己的項目中的屬性來覆蓋單個依賴。 例如,要升級到另一個 Spring Data 版本序列,您需要將以下內容添加到您的pom.xml中。
|
|
檢查?spring-boot-dependencies pom?以獲取支持的屬性列表。
不是每個人都喜歡從spring-boot-starter-parent POM繼承。 您公司可能有自己標準的父母,或者您可能只希望明確聲明所有的Maven配置。
如果您不想使用spring-boot-starter-parent,則仍然可以通過使用scope=import依賴來保持依賴管理(但不是插件管理)的好處:
|
|
該設置不允許您使用如上所述的屬性來覆蓋單個依賴關系。 要實現相同的結果,您需要在spring-boot-dependencies條目之前在項目的dependencyManagement中添加一個條目。 例如,要升級到另一個Spring Data發行序列,您需要將以下內容添加到您的pom.xml中。
|
|
在上面的例子中,我們指定了一個BOM,但是任何依賴關系類型都可以被這樣覆蓋。
spring-boot-starter-parent選擇相當保守的Java兼容性版本。 如果要遵循我們的建議并使用更高版本的Java版本,可以添加java.version屬性:
|
|
Spring Boot包括一個Maven插件,可以將項目打包成可執行jar。 如果要使用它,請將插件添加到部分:
|
|
如果您使用Spring Boot啟動器 parent pom,則只需要添加這個插件,除非您要更改parent中定義的設置,否則不需要進行配置。
Gradle用戶可以直接在其依賴關系部分導入“啟動器”。 不像Maven,沒有“超級父”導入來共享一些配置。
|
|
spring-boot-gradle-plugin也是可用的,它提供了從源代碼創建可執行jar并運行項目的任務。 它還提供依賴關系管理,除其他功能外,還允許您省略由Spring Boot管理的任何依賴關系的版本號:
|
|
可以使用Apache Ant + Ivy構建Spring Boot項目。 spring-boot-antlib“AntLib”模塊也可用于幫助Ant創建可執行文件。
要聲明依賴關系,典型的ivy.xml文件將如下所示:
|
|
典型的build.xml將如下所示:
|
|
請參見第84.10節“從Ant構建可執行存檔,而不使用spring-boot-antlib”如果不想使用spring-boot-antlib模塊,請參閱“操作方法”。
啟動器是一組方便的依賴關系描述符,可以包含在應用程序中。 您可以獲得所需的所有Spring和相關技術的一站式服務,無需通過示例代碼搜索和復制粘貼依賴配置。 例如,如果要開始使用Spring和JPA進行數據庫訪問,那么只需在項目中包含spring-boot-starter-data-jpa依賴關系即可。
啟動器包含許多依賴關系,包括您需要使項目快速啟動并運行,并具有一致的受支持的依賴傳遞關系。
What’s in a name
所有正式起動器都遵循類似的命名模式: spring-boot-starter-?,其中是特定類型的應用程序。 這個命名結構旨在幫助你快速找到一個啟動器。 許多IDE中的Maven插件允許您按名稱搜索依賴項。 例如,安裝Eclipse或STS的Maven插件后,您可以簡單地在POM編輯器中點擊 Dependency Hierarchy,并在filter輸入“spring-boot-starter”來獲取完整的列表。
如創建自己的啟動器部分所述,第三方啟動程序不應該從Spring-boot開始,因為它是為正式的Spring Boot artifacts 保留的。 acme 的 第三方啟動器通常被命名為acme-spring-boot-starter。
Spring Boot在org.springframework.boot組下提供了以下應用程序啟動器:
表13.1. Spring 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 Services 啟動器 | Pom |
spring-boot-starter-mail | Java Mail和Spring Framework的電子郵件發送支持的啟動器 | Pom |
spring-boot-starter-data-redis | Redis key-value 數據存儲與Spring Data Redis和Jedis客戶端啟動器 | Pom |
spring-boot-starter-web | 使用Spring MVC構建Web,包括RESTful應用程序。使用Tomcat作為默認的嵌入式容器的啟動器 | Pom |
spring-boot-starter-data-gemfire | 使用GemFire分布式數據存儲和Spring Data GemFire的啟動器 | Pom |
spring-boot-starter-activemq | 使用Apache ActiveMQ的JMS啟動器 | Pom |
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 Validation 與Hibernate Validator的啟動器 | Pom |
spring-boot-starter-hateoas | 使用Spring MVC和Spring HATEOAS構建基于超媒體的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-data-ldap | 使用Spring Data LDAP的啟動器 | 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數據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 | 使用Apache Solr搜索平臺與Spring Data 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)功能:
表13.2 Spring Boot生產環境啟動器
名稱 | 描述 | Pom |
---|---|---|
spring-boot-starter-actuator | 使用Spring Boot Actuator提供生產準備功能,可幫助您監控和管理應用程序的啟動器 | Pom |
spring-boot-starter-remote-shell | 使用CRaSH遠程shell通過SSH監視和管理您的應用程序的啟動器。 自1.5以來已棄用 | 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-start-logging的替代方法 | Pom |
有關社區貢獻的更多啟動器的列表,請參閱GitHub上的spring-boot-startters模塊中的README文件。
Spring Boot不需要任何特定的代碼結構設計,但是有一些最佳實踐可以幫助您。
當類不包括包聲明時,它被認為是在“默認包”中。 通常不鼓勵使用“默認包”,并應該避免使用。 對于使用@ComponentScan,@EntityScan或@SpringBootApplication注解的Spring Boot應用程序,可能會有一些特殊的問題,因為每個jar的每個類都將被讀取。
我們建議您遵循Java推薦的軟件包命名約定,并使用反向域名(例如,com.example.project)。
我們通常建議您將應用程序主類放到其他類之上的根包(root package)中。 @EnableAutoConfiguration注解通常放置在您的主類上,它隱式定義了某些項目的基本“搜索包”。 例如,如果您正在編寫JPA應用程序,則@EnableAutoConfiguration注解類的包將用于搜索@Entity項。
使用根包(root package)還可以使用@ComponentScan注釋,而不需要指定basePackage屬性。 如果您的主類在根包中,也可以使用@SpringBootApplication注釋。
這是一個典型的布局:
|
|
Application.java文件將聲明main方法以及基本的@Configuration。
|
|
Spring Boot支持基于Java的配置。雖然可以使用XML配置用SpringApplication.run(),但我們通常建議您的主source是@Configuration類。 通常,定義main方法的類也是作為主要的@Configuration一個很好的選擇。
許多使用XML配置的Spring示例已經在網上發布。 如果可能的話我們建議始終嘗試使用等效的基于Java的配置。 搜索 enable* 注解可以是一個很好的起點。
轉載:Spring Boot中文文檔
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态