若是你剛剛開始使用Spring Boot,這是你的一部份內容! 在這裏咱們將會回答一些基本的「what?」, 「how?」 和 「why?」的問題。 在這裏你會找到一個詳細的Spring Boot介紹和安裝說明。 而後,咱們將構建咱們的第一個Spring Boot應用程序,並討論一些核心原則。html
Spring Boot能夠基於Spring輕鬆建立能夠「運行」的、獨立的、生產級的應用程序。 對Spring平臺和第三方類庫咱們有本身見解和意見(約定大於配置),因此你最開始的時候不要感到奇怪。大多數Spring Boot應用程序須要不多的Spring配置。java
您可使用Spring Boot建立可使用java -jar
或傳統 war 包部署啓動的Java應用程序。 咱們還提供一個運行「spring scripts」的命令行工具。git
咱們的主要目標是:程序員
默認狀況下,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提供了顯式構建支持。github
雖然您能夠在Java 6或7上使用 Spring Boot,但咱們一般推薦Java 8。web
如下嵌入式servlet容器能夠直接使用:spring
名稱 | 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+ 的容器中。shell
Spring Boot能夠與「經典(classic)」Java開發工具一塊兒使用或做爲命令行工具安裝。 不管如何,您將須要Java SDK v1.6或更高版本。 在開始以前檢查當前的Java安裝:apache
|
若是您是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文件:
<?xml version="1.0" encoding="UTF-8"?> |
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 文件:
plugins { |
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 ,您應該會看到如下輸出:
Hello World! |
若是您從早期版本的 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是用於構建項目的配置文件。打開編輯器並添加如下內容:
<?xml version="1.0" encoding="UTF-8"?> |
這應該給你一個工做構建(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依賴關係:
<dependencies> |
若是您再次運行 mvn dependency:tree ,您將看到如今有許多附加依賴關係,包括Tomcat Web服務器和Spring Boot自己。
要完成咱們的應用程序,咱們須要建立一個的Java文件。 默認狀況下,Maven將從src/main/java編譯源代碼,所以您須要建立該文件夾結構,而後添加一個名爲src/main/java/Example.java的文件:
import org.springframework.boot.*; |
雖然這裏沒有太多的代碼,可是有一些重要的部分。
咱們的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 你應該看到如下輸出:
Hello World! |
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中。 在 dependencies標籤 下方插入如下行:
<build> |
spring-boot-starter-parent POM 包括從新打包目標的 executions標籤 配置。 若是您不使用該父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功能。