java -jar
運行的 Java 應用程序或者傳統的 war 包。咱們還提供了一個運行 「spring scripts」 的命令行工具。雖然可使用Java 6或7的構建Spring Boot,可是咱們一般推薦使用Java 8。html
如下嵌入式servlet容器是開箱即用的:java
名稱 | 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能夠與「經典」Java開發工具一塊兒使用,也能夠做爲命令行工具安裝。不管如何,您將須要Java SDK v1.6或更高版本。 在開始以前,您應該檢查您當前的Java安裝版本:git
java -version
github
若是您對Java開發不熟悉,或者您只是想嘗試 Spring Boot,則可能須要先嚐試 Spring Boot CLI,不然請閱讀'經典'安裝說明。web
儘管Spring Boot與Java 1.6兼容,但若是可能的話,應該考慮使用最新版本的Java。spring
在許多操做系統上,Maven能夠經過包管理器來安裝。 若是您是OSX Homebrew用戶,請嘗試
brew install maven
。 Ubuntu用戶能夠運行sudo apt-get install maven
。apache
org.springframework.boot
做爲groupId
,一般,您的Maven POM文件將從spring-boot-starter-parent
項目繼承,並將依賴項聲明爲一個或多個「啓動器Starters
」。Spring Boot還提供了一個可選的Maven插件來建立可執行的jar文件。pom.xml
文件:<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- Inherit defaults from Spring Boot -->
<parent><!-- 表示從父項目中繼承 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId><!-- web支持 -->
</dependency>
</dependencies>
<!-- Package as an executable jar 打包成可執行jar文件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
複製代碼
繼承
Spring-Boot-starter-parent
項目是使用Spring Boot的一個好方法,但它可能並不適合全部的狀況。有時您可能須要從不一樣的父POM文件中繼承,或者您可能不喜歡咱們的默認設置。有關使用import
範圍的替代解決方案,請參見Section 13.2.2, 「Using Spring Boot without the parent POM」數組
org.springframework.boot
group
進行聲明。一般,您的項目將聲明依賴關係到一個或多個Starters
。 Spring Boot提供了一個有用的Gradle插件,能夠用來簡化依賴聲明和建立可執行的jar。
Gradle Wrapper
Gradle Wrapper提供了一種在須要構建項目時「獲取」Gradle的好方法。 這是一個小腳本和庫,與代碼一塊兒提交以引導構建過程。 有關詳細信息,請參閱docs.gradle.org/2.14.1/user…。瀏覽器
plugins {
id 'org.springframework.boot' version '1.5.9.RELEASE'
id 'java'
}
jar {
baseName = 'myproject'
version = '0.0.1-SNAPSHOT'
}
repositories {
jcenter()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
複製代碼
project wiki
上託管的「release notes」。 您會發現升級說明以及每一個版本的‘新增長、值得注意’的特性列表。brew upgrade
),或者若是您手動安裝了CLI,請按照standard instructions記住更新PATH
環境變量以刪除全部舊的引用。spring.io網站包含許多使用Spring Boot的「入門指南」。 若是你想解決一個特定的問題, 先在那裏檢查。 您能夠經過轉到start.spring.io並從依賴關係搜索器中選擇
Web
starter來快速執行如下步驟。 這將自動生成一個新的項目結構,以便您能夠當即開始編碼。 檢查文檔以獲取更多詳細信息。安全
$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
複製代碼
$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home: /Users/user/tools/apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation
複製代碼
此示例須要在其本身的文件夾中建立。 後續的說明假定你已經建立了一個合適的文件目錄(其實就是標準的
maven
,咱們也能夠經過start.spring.io自動生成項目目錄,小編接下來會截圖給你們看),而且保證命令行終端是你的「當前目錄」(也就是項目根目錄,小編是在boot
目錄下)。
- boot
- src
- main
- java
- Example.java
- test
- java
- pom.xml
複製代碼
pom.xml
文件開始。 pom.xml
是用來構建項目的配方。 打開你最喜歡的文本編輯器並添加如下內容:<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
複製代碼
mvn package
來測試構建是否正確,但注意目前所打包出來是空的包,你能夠忽略譬如「jar will be empty - no content was marked for inclusion!」的警告。
此時,您能夠將項目導入IDE(大多數現代Java IDE包含對Maven的內置支持)。 爲了簡單起見,咱們將繼續在這個例子中使用純文本編輯器。
starters
,咱們能夠很方便地將jar添加到你的classpath中。 咱們的示例應用程序已經在POM的父節點中使用了spring-boot-starter-parent
。 spring-boot-starter-parent
是一個特別的starter
,提供了有用的Maven默認值。 它還提供了一個dependency-management 功能,以便您能夠省略version
標記以得到「blessed(好的意思吧!)」的依賴關係。spring-boot-starter-web
依賴項,但在此以前,咱們來看看咱們目前擁有的。$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
複製代碼
mvn dependency:tree
命令打印項目依賴項的樹形表示。 你能夠看到spring-boot-starter-parent自己不提供依賴關係。(也就是父項目不提供其餘如web的依賴,也無論理依賴,web依賴須要咱們在本身的子項目POM
文件中添加) 讓咱們編輯咱們的pom.xml,並在父節的下面添加spring-boot-starter-web
依賴項:<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
複製代碼
mvn dependency:tree
命令,你會發現多出了不少的依賴項,其中就包括內嵌的 Tomcat服務器和Spring Boot自己。src / main / java
編譯源代碼,因此你須要建立這個文件夾結構,而後添加一個名爲src / main / java / Example.java
的文件:import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}
複製代碼
@RestController
和@RequestMapping
註解class
中,第一個註解就是@RestController
。這是一個stereotype(好像是API中的一個包名)
註解。這個註解給閱讀這個class
代碼的開發人員一種提示(簡單地講就是代表這個類是什麼),但對於 Spring 來講,它代表該類扮演者一個重要的角色。在咱們的例子中,它代表咱們的類是一個web @Controller
,因此Spring在處理傳入的Web請求時會考慮它。
@RestController
和@RequestMapping
註解是Spring MVC註釋(它們不是Spring Boot特有的)。 有關更多詳細信息,請參閱Spring參考資料中的MVC部分。
@EnableAutoConfiguration
註解@EnableAutoConfiguration
。 這個註解告訴Spring Boot根據你添加的jar依賴來「猜想」你將如何配置Spring。 因爲spring-boot-starter-web
添加了Tomcat和Spring MVC,因此自動配置會假定你正在開發一個Web應用程序並相應地配置Spring。 starters
配合使用,但這兩個概念並不直接相關。 您能夠自由選擇和選擇starter
以外的jar依賴項,而且Spring Boot將盡其所能地自動配置到您的應用程序當中。main
方法。這只是一個遵循Java約定的應用程序入口點的標準方法。 咱們的 main
方法經過調用run來委託Spring Boot的SpringApplication
類。 SpringApplication
將引導咱們的應用程序,開啓Spring並繼而轉向啓動自動配置的Tomcat Web
服務器。 咱們須要將Example.class
做爲參數傳遞給run
方法,以告知SpringApplication
是Spring的主要組件。 args
數組也被傳遞以暴露任何命令行參數。spring-boot-starter-parent POM
,因此咱們知道怎樣找到程序運行的入口(main方法
),因此咱們可使用它來啓動應用程序。$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.222 seconds (JVM running for 6.514) 複製代碼
Hello World!
複製代碼
ctrl+c
便可。讓咱們經過建立一個徹底獨立的可執行jar文件來完成咱們的例子,咱們能夠在生產環境中運行它。 可執行jar(有時也稱爲「fat jars」)是包含您編譯的類以及您的代碼須要運行的全部jar依賴項的歸檔文件。
可執行的 jars and Java
Java不提供任何標準的方式來加載嵌套的jar文件(即jar文件自己包含在jar中)。 若是您正在分發自包含的應用程序,這可能會有問題。 爲解決這個問題,不少開發者開發瞭如
uber jars
.一個uber jar
未來自不一樣jar
包的類打包成一個可發佈的archive
。這種方法的問題在於,很難在應用程序中看到項目實際使用的庫。 若是在多個jar
中使用相同的文件名(但具備不一樣的內容,即不一樣jar
種類名有可能相同嘛!),則也多是有問題的。 Spring Boot採用了不一樣的方法,能夠直接嵌入jar
。
要建立一個可執行的jar文件,咱們須要將spring-boot-maven-plugin
添加到咱們的pom.xml
中。 在依賴關係部分下面插入如下幾行:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
複製代碼
spring-boot-starter-parent POM
中包含<executions>
配置來綁定repackage
目標。 若是您不使用父POM
,則須要自行聲明此配置。 有關詳細信息,請參閱插件文檔。
保存你的pom.xml
並從命令行運行mvn package
:
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.9.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
複製代碼
若是您查看target
(注:在項目目錄下會生成一個target目錄)目錄,則應該看到myproject-0.0.1-SNAPSHOT.jar
。 該文件大小應該在10 MB左右。 若是你想偷看裏面究竟是什麼東西,你可使用jar tvf
:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
您還應該在target
目錄中看到一個名爲myproject-0.0.1-SNAPSHOT.jar.original
的小得多的文件。 這是Maven
在被Spring Boot從新包裝以前建立的原始jar文件。
要運行該應用程序,請使用java -jar命令:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864) 複製代碼
像之前同樣,要優雅地退出應用程序點擊ctrl-c
。