本文翻譯自Spring Boot官方文檔的Getting Started部分,原文可點(diǎn)擊此處查看。
如果你剛開(kāi)始學(xué)習(xí)使用Spring Boot,或者Spring框架,那么這篇文章正是為你準(zhǔn)備的!通過(guò)這篇文章,我們將介紹關(guān)于Spring Boot的一些基本知識(shí)。你將從接下來(lái)的章節(jié)中了解到Spring Boot的安裝命令,我們將一起構(gòu)建我們的第一個(gè)Spring Boot應(yīng)用,然后我們將一起討論一些核心原則。
Spring Boot簡(jiǎn)介
Spring Boot可以幫助我們輕易創(chuàng)建出可獨(dú)立運(yùn)行的,基于Spring的生產(chǎn)級(jí)應(yīng)用,這些應(yīng)用甚至可以直接運(yùn)行而不依賴其他環(huán)境(僅需要JVM)。我們用統(tǒng)一的方式來(lái)看待Spring平臺(tái)以及第三方庫(kù),因此你在使用的過(guò)程中不會(huì)有太多混亂的情況出現(xiàn),并且大部分Spring Boot應(yīng)用幾乎不需要處理煩人的Spring配置。
使用Spring Boot你可以創(chuàng)建一個(gè)可直接用java -jar命令運(yùn)行的包,當(dāng)然也可以創(chuàng)建傳統(tǒng)的war包,我們還提供了一個(gè)命令行工具用來(lái)運(yùn)行“spring腳本”。
我們的主要目的是:
- 提供一個(gè)急速的并且隨手可得的Spring項(xiàng)目開(kāi)發(fā)體驗(yàn)。
- 提供穩(wěn)定的開(kāi)箱即得的開(kāi)發(fā)方式,同時(shí)又能迅速的在默認(rèn)配置的基礎(chǔ)上做出按需的配置。
- 提供大量的公共的非功能性特性(例如:嵌入式服務(wù)器,權(quán)限管理,性能監(jiān)控,健康檢查,外部配置等)。
- 絕對(duì)不需要代碼生成并且不需要XML配置文件。
系統(tǒng)要求
默認(rèn)情況下Spring Boot 1.3.6.RELEASE要求Java 7和Spring Framework 4.2.7.RELEASE或更高版本。你也可以使用Java 6,但是需要一些額外的配置。我們?yōu)镸aven (3.2+)和Gradle (1.12+)提供了構(gòu)建支持。
雖然你可以在Java 6或Java 7環(huán)境下使用Spring Boot,但我們通常建議如果有可能盡量使用Java 8。
Servlet容器
默認(rèn)包含下列嵌入式服務(wù)器:
| Name | Servlet Version | Java Version |
|---|---|---|
| Tomcat 8 | 3.1 | Java 7+ |
| Tomcat 7 | 3.0 | Java 6+ |
| Jetty 9 | 3.1 | Java 7+ |
| Jetty 8 | 3.0 | Java 6+ |
| Undertow 1.1 | 3.1 | Java 7+ |
你可以將Spring Boot應(yīng)用部署到任何的Servlet 3.0+兼容的容器中。
安裝Spring Boot
Spring Boot可以使用“傳統(tǒng)”的Java開(kāi)發(fā)工具或者作為一個(gè)命令行工具安裝。但無(wú)論如何,你需要Java SDK v1.6以上的開(kāi)發(fā)環(huán)境。 你可以用以下命名來(lái)查看你的Java版本:
$ java -version
如果你是一個(gè)Java開(kāi)發(fā)的新手或者你只是想體驗(yàn)一下Spring Boot,你可能首先想試試Spring Boot CLI,你也可以繼續(xù)閱讀下面的內(nèi)容來(lái)了解“傳統(tǒng)”方式的使用。
雖然Spring Boot兼容Java 1.6,但如果可能的話,請(qǐng)盡量使用最新版本的Java環(huán)境。
安裝指令
你可以像任何標(biāo)準(zhǔn)的Java庫(kù)一樣的方式使用Spring Boot,只需要簡(jiǎn)單的將相關(guān)的spring-boot-*.jar文件引入到你的classpath中。Spring Boot不要求任何特殊的工具集成,所以你可以使用任何IDE或者文本編輯器,Spring Boot應(yīng)用沒(méi)有任何特殊的地方,所以你可以像其他Java程序一樣運(yùn)行和調(diào)試。
雖然你* 可以 *簡(jiǎn)單的把Spring Boot的jar文件復(fù)制到你的項(xiàng)目中,但通常的做法是使用一些支持依賴管理的構(gòu)建工具(例如Maven或者Gradle)。
Maven安裝
Spring Boot兼容Apache Maven 3.2或更高版本。如果你沒(méi)有安裝Maven,你可以按照maven.apache.org中的方法安裝。
在很多操作系統(tǒng)上都可以通過(guò)相應(yīng)的包管理器來(lái)安裝Maven。如果你是OSX Homebrew的用戶,你可以通過(guò)命令
brew install maven來(lái)安裝,而Ubuntu用戶可以運(yùn)行sudo apt-get install maven來(lái)安裝。
Spring Boot的依賴使用org.springframework.boot作為groupId,通常你的Maven POM文件需要繼承自spring-boot-starter-parent項(xiàng)目,然后聲明一個(gè)或多個(gè)“Starter POMs”依賴。Spring Boot還提供了一個(gè)可選的Maven plugin用來(lái)創(chuàng)建可執(zhí)行的jar包。
一個(gè)常規(guī)的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>
<!-- 繼承Spring Boot默認(rèn)配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
</parent>
<!-- 添加一個(gè)典型的web項(xiàng)目配置 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- 可執(zhí)行jar包打包插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
使用
spring-boot-starter-parent是一個(gè)使用Spring Boot非常好的方式,但并不總是所有情況下都是最適合的方式,有時(shí)你可能需要你的項(xiàng)目繼承自其它的父項(xiàng)目POM,或者你只是單純的不喜歡我們的POM設(shè)置,我們下面有專門的一個(gè)章節(jié)來(lái)介紹不依賴我們的父項(xiàng)目POM如何使用Spring Boot。
Gradle安裝
Spring Boot兼容Gradle 1.12或更高版本。如果你還沒(méi)有安裝Gradle,你可以按照www.gradle.org/中的方法安裝。
Spring Boot依賴使用org.springframework.boot作為group。
通常你的項(xiàng)目需要聲明一個(gè)或多個(gè)“Starter POMs”依賴。Spring Boot提供了一個(gè)Gradle plugin來(lái)幫助你創(chuàng)建可執(zhí)行的jar包。
Gradle Wrapper
Gradle Wrapper提供了一個(gè)很優(yōu)雅的方式將Gradle“包含”到你需要編譯的項(xiàng)目中,它是一個(gè)可以和代碼一起提交的小型的腳本和庫(kù),幫助你啟動(dòng)一個(gè)編譯進(jìn)程。詳情參看這里。
一個(gè)常規(guī)的build.gradle文件如下:
buildscript {
repositories {
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'spring-boot'
jar {
baseName = 'myproject' version = '0.0.1-SNAPSHOT'
}
repositories {
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
安裝Spring Boot CLI
Spring Boot CLI是一個(gè)命令行工具,可以幫助你快速建立Spring項(xiàng)目原型。它允許你運(yùn)行Groovy腳本,與Java語(yǔ)法類似但不需要太多的腳手架式的語(yǔ)法。
你并不需要在你的Spring Boot項(xiàng)目中使用CLI工具,但它絕對(duì)是落地一個(gè)Spring應(yīng)用最快的方式。
手動(dòng)安裝
你可以在下面的Spring軟件源地址下載Spring CLI:
你也可以選擇最前沿的snapshot分發(fā)包。
下載完成后的壓縮包中可以找到INSTALL.txt,按照其中的指令進(jìn)行安裝。大體上如下:在.zip文件的bin/目錄下有一個(gè)spring腳本(Windows下是spring.bat),或者你也可以直接通過(guò)java -jar命令運(yùn)行.jar文件(使用上述的腳本可以幫助你確保classpath正確設(shè)置) 。
使用SDKMAN! 安裝
SDKMAN! (The Software Development Kit Manager)可以用來(lái)管理多種SDK的多個(gè)版本,包括Groovy和Spring Boot CLI。從sdkman.io獲取SDKMAN!然后通過(guò)下面的命令來(lái)安裝Spring Boot:
$ sdk install springboot
$ spring --version
Spring Boot v1.3.6.RELEASE
如果你在開(kāi)發(fā)有關(guān)CLI的特性,并且想要方便的獲取你剛剛構(gòu)建的版本,可以使用下面的額外指令:
$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-1.3.6.RELEASE-bin/spring-1.3.6.RELEASE/
$ sdk default springboot dev
$ spring --version
Spring CLI v1.3.6.RELEASE
這將會(huì)安裝一個(gè)名叫dev實(shí)例的spring本地實(shí)例,這個(gè)實(shí)例指向你的目標(biāo)構(gòu)建路徑,這樣你每次重新構(gòu)建Spring Boot,spring命令就會(huì)保持同步更新了。
你可以用下面的命令來(lái)查看:
$ sdk ls springboot
================================================================================
Available Springboot Versions
================================================================================
> + dev* 1.3.6.RELEASE
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
OSX Homebrew安裝
如果你在使用Mac并且使用Homebrew,安裝Spring Boot CLI需要做的所有事情就是運(yùn)行下面的命令:
$ brew tap pivotal/tap
$ brew install springboot
Homebrew會(huì)將spring安裝到/usr/local/bin。
如果你找不到這個(gè)formula,可能你安裝的brew過(guò)期了,運(yùn)行
brew update然后重試。
MacPorts installation
如果你使用Mac并且使用MacPorts, 安裝Spring Boot CLI需要做的所有事情就是運(yùn)行下面的命令:
$ sudo port install spring-boot-cli
命令行自動(dòng)補(bǔ)全
Spring Boot CLI有一個(gè)配套的腳本為BASH和zsh提供了自動(dòng)補(bǔ)全功能。 你可以在任意的shell中用source來(lái)執(zhí)行這個(gè)腳本(同樣名叫spring),或者將其放在你個(gè)人或者系統(tǒng)級(jí)的bash自動(dòng)補(bǔ)全初始化目錄中。在Debian系統(tǒng)中,系統(tǒng)級(jí)的腳本位于/shell-completion/bash中,當(dāng)啟動(dòng)一個(gè)新的shell時(shí),目錄中的腳本會(huì)全部執(zhí)行。你可以手動(dòng)運(yùn)行這個(gè)腳本,例如你使用SDKMAN!安裝的話,就使用以下的命令:
$ . ~/.sdkman/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
grab help jar run test version
如果你使用Homebrew或MacPorts安裝Spring Boot CLI,命令行自動(dòng)補(bǔ)全腳本會(huì)自動(dòng)注冊(cè)到你的shell中。
快速創(chuàng)建一個(gè)Spring CLI示例
你可以使用這里的一個(gè)非常簡(jiǎn)單的web應(yīng)用來(lái)測(cè)試你的安裝。創(chuàng)建一個(gè)名為app.groovy的文件:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
然后在shell中運(yùn)行:
$ spring run app.groovy
如果你第一次運(yùn)行,會(huì)花費(fèi)一些時(shí)間來(lái)下載依賴,后面再次運(yùn)行的時(shí)候會(huì)快的多。
在你最喜歡的瀏覽器中打開(kāi)localhost:8080然后你應(yīng)該能看到下面的輸出:
Hello World!
從早期的Spring Boot版本升級(jí)
如果你正在從早期的Spring Boot發(fā)行版升級(jí),查看project wiki上的“release notes”。你會(huì)在每個(gè)發(fā)行版本的“new and noteworthy”特性列表旁邊找到升級(jí)的指令。
要升級(jí)已經(jīng)存在的CLI,請(qǐng)使用相應(yīng)的包管理器命令(例如brew upgrade),或者如果你的CLI是手動(dòng)安裝的,參考標(biāo)準(zhǔn)指令,記得更新你的PATH環(huán)境變量,清除老舊的引用地址。
開(kāi)發(fā)你的第一個(gè)Spring Boot應(yīng)用
現(xiàn)在我們來(lái)開(kāi)發(fā)一個(gè)簡(jiǎn)單的“Hello World” Java web應(yīng)用,并且用上一些Spring Boot的關(guān)鍵特性。我們會(huì)使用Maven來(lái)構(gòu)建這個(gè)項(xiàng)目,大部分的IDE都支持Maven。
網(wǎng)址spring.io下包含了很多使用了Spring Boot的“Getting Started”指南,如果你在尋找特定問(wèn)題的解決方案,你可以先去那里看看。你可以從這個(gè)網(wǎng)址start.spring.io進(jìn)入來(lái)簡(jiǎn)化步驟,在依賴搜索中選擇web starter,這將自動(dòng)生成一個(gè)新的項(xiàng)目結(jié)構(gòu),這樣你就可以直接開(kāi)始編碼。 你還可以查看詳細(xì)文檔。
在開(kāi)始之前,打開(kāi)一個(gè)終端并驗(yàn)證你的Java和Maven版本:
$ 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
你需要為這個(gè)示例創(chuàng)建一個(gè)單獨(dú)的目錄,后續(xù)的所有指令都假設(shè)你創(chuàng)建了合適的目錄,并且你的“當(dāng)前目錄”就在你的項(xiàng)目目錄中。
創(chuàng)建POM
我們需要?jiǎng)?chuàng)建一個(gè)Maven pom.xml文件,這個(gè)pom.xml文件將作為你項(xiàng)目的構(gòu)建配置。打開(kāi)你最常用的文本編輯器然后添加如下內(nèi)容:
<?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.3.6.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
這樣你就有了一個(gè)可以構(gòu)建的項(xiàng)目,你可以運(yùn)行mvn package來(lái)測(cè)試(你現(xiàn)在可以暫時(shí)忽略“jar will be empty - no content was marked for inclusion!”的警告信息)。
這時(shí)候你就可以把項(xiàng)目導(dǎo)入一個(gè)IDE了(大部分現(xiàn)代Java IDE都內(nèi)置了Maven的支持)。但為了簡(jiǎn)單起見(jiàn),我們接下來(lái)還是使用純文本編輯器來(lái)操作這個(gè)示例。
添加classpath依賴
Spring Boot提供了大量的“Starter POMs”,讓你可以很方便的添加需要的jar包到你的classpath。我們的示例程序已經(jīng)在POM的parent中使用了spring-boot-starter-parent,這是一個(gè)特殊的starter,它提供了很多有用的默認(rèn)Maven配置,以及依賴管理的支持,使得你在使用一些依賴的時(shí)候可以省略version版本號(hào)。
其他的“Starter POMs”可以讓我們很方便的使用開(kāi)發(fā)某種特定應(yīng)用時(shí)需要的依賴。如果我們想開(kāi)發(fā)一個(gè)web應(yīng)用,我們就引入一個(gè)spring-boot-starter-web的依賴,在這之前我們先來(lái)看看我們現(xiàn)在已經(jīng)引入的依賴:
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
mvn dependency:tree命令可以打印出你的項(xiàng)目的依賴樹(shù),如你所見(jiàn)spring-boot-starter-parent自身并沒(méi)有提供任何的依賴包,我們現(xiàn)在編輯我們的pom.xml,加進(jìn)spring-boot-starter-web依賴:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
如果你再次運(yùn)行mvn dependency:tree命令,你會(huì)發(fā)現(xiàn)現(xiàn)在出現(xiàn)了一些新的依賴,包括Tomcat和Spring Boot。
敲代碼
為了完成我們的應(yīng)用,我們需要?jiǎng)?chuàng)建一個(gè)Java文件。Maven默認(rèn)會(huì)從src/main/java中找到源代碼并編譯,所以你需要按照這個(gè)格式創(chuàng)建目錄結(jié)構(gòu),然后添加一個(gè)叫做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);
}
}
這里沒(méi)有多少代碼,后面還會(huì)添加很多代碼進(jìn)來(lái),但現(xiàn)在讓我們從最重要的部分開(kāi)始吧。
注解@RestController和@RequestMapping
我們的Example類里面的第一個(gè)注解是@RestController,它是一個(gè)構(gòu)造型(stereotype)注解,用來(lái)標(biāo)記并且告訴Spring這個(gè)類扮演一個(gè)特殊的角色,在這個(gè)例子里面,我們的類是一個(gè)web應(yīng)用的@Controller,當(dāng)Spring要處理web請(qǐng)求的時(shí)候會(huì)找到這個(gè)類。
下面的@RequestMapping注解標(biāo)注路由(routing)信息,用來(lái)告訴Spring任何路徑為“/”的HTTP請(qǐng)求應(yīng)該被映射到home方法上。因?yàn)轭惐粯?biāo)注了@RestController注解所以這里方法返回的字符串會(huì)被Spring直接原封不動(dòng)的傳遞給請(qǐng)求者。
這里的
@RestController和@RequestMapping注解是Spring MVC提供的注解(它們并不是由Spring Boot提供的特殊注解),參考MVC相關(guān)文檔。
注解@EnableAutoConfiguration
上面的第二類級(jí)注解是@EnableAutoConfiguration,這個(gè)注解會(huì)讓Spring Boot基于你已添加的jar依賴來(lái)“猜測(cè)”你想怎么樣來(lái)配置Spring。如果你添加了spring-boot-starter-web因此引入了Tomcat和Spring MVC的依賴,自動(dòng)配置系統(tǒng)會(huì)假設(shè)你要開(kāi)發(fā)一個(gè)web應(yīng)用并依此幫你配置好Spring。
Starter POMs和自動(dòng)配置(Auto-Configuration)
自動(dòng)配置在設(shè)計(jì)上跟“Starter POMs”十分契合,但這兩個(gè)概念并沒(méi)有直接綁定關(guān)系,你可以自由的選擇外部jar依賴,Spring Boot還是可以很好幫助你自動(dòng)配置你的應(yīng)用。
“main”方法
我們的應(yīng)用最后一部分是main方法,這是一個(gè)遵循Java慣例的標(biāo)準(zhǔn)應(yīng)用入口方法,我們的main方法通過(guò)執(zhí)行run方法代理了Spring Boot的SpringApplication類。SpringApplication將會(huì)運(yùn)行我們的應(yīng)用,啟動(dòng)自動(dòng)配置的Tomcat服務(wù)器。我們需要將Example.class作為參數(shù)傳入run方法,以告訴Spring這是我們的首選組件,命令行參數(shù)也會(huì)通過(guò)args數(shù)組傳入。
運(yùn)行示例
到這里我們的應(yīng)用應(yīng)該可以順利運(yùn)行了,如果我們使用了spring-boot-starter-parent的POM,我們將會(huì)有一個(gè)非常有用的run goal,可以用來(lái)直接啟動(dòng)我們的應(yīng)用,在項(xiàng)目根目錄鍵入命令mvn spring-boot:run來(lái)啟動(dòng)應(yīng)用:
$ mvn spring-boot:run
. ____ _ __ _ _
/\\\\ / ___'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\
( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\
\\\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.6.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
打開(kāi)瀏覽器并訪問(wèn)localhost:8080你應(yīng)該可以看到如下的輸出:
Hello World!
如果想退出應(yīng)用可以按ctrl-c。
創(chuàng)建一個(gè)可執(zhí)行jar文件
讓我們創(chuàng)建一個(gè)完全自包含的并且可以在生產(chǎn)環(huán)境運(yùn)行的可執(zhí)行jar文件,以此來(lái)結(jié)束我們的示例??蓤?zhí)行jar(有時(shí)也稱為“fat jar”)是一個(gè)包含了運(yùn)行應(yīng)用所需的所有依賴的包文件。
可執(zhí)行jar和Java
Java沒(méi)有提供任何標(biāo)準(zhǔn)的機(jī)制來(lái)加載嵌套的jar文件(jar包中包含了其他jar文件),如果你想要分發(fā)一個(gè)自包含的應(yīng)用,這將成為一個(gè)阻礙。
為了解決這個(gè)問(wèn)題,很多開(kāi)發(fā)者使用“超級(jí)”jar,簡(jiǎn)單的從所有jar文件中取出所有類并一起打包在一個(gè)單獨(dú)的jar文件中。這種做法存在的問(wèn)題是你很難弄清楚你的應(yīng)用實(shí)際上在使用的是哪個(gè)庫(kù),如果不同的jar中存在同名的文件(但內(nèi)容不同)也將帶來(lái)潛在的問(wèn)題。
Spring Boot采取了一個(gè)不同的方式,允許你真正的嵌套jar文件。
想要?jiǎng)?chuàng)建一個(gè)可執(zhí)行jar文件,我們需要在pom.xml中添加spring-boot-maven-plugin,在dependencies段下面添加如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring-boot-starter-parent的POM包含<executions>配置,綁定了repackagegoal,如果你沒(méi)有使用parent POM,你需要自己聲明這個(gè)配置,參考插件文檔。
保存你的pom.xml并且在命令行中運(yùn)行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.3.6.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
這時(shí)你在target目錄中就能看到myproject-0.0.1-SNAPSHOT.jar,這個(gè)文件的大小應(yīng)該在10Mb左右。如果你想查看文件內(nèi)部的情況,可以使用jar tvf:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
在target目錄中應(yīng)該還可以看到一個(gè)小得多的文件,名為myproject-0.0.1-SNAPSHOT.jar.original,這是在Spring Boot執(zhí)行repackag之前Maven創(chuàng)建的原始jar文件。
要運(yùn)行應(yīng)用,我們可以使用java -jar命令:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\\\ / ___'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\
( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\
\\\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.6.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
和之前一樣,如果想退出應(yīng)用,按ctrl-c。
接下來(lái)閱讀什么內(nèi)容
希望這個(gè)章節(jié)給你提供了一些Spring Boot的基礎(chǔ),并且能幫助你創(chuàng)建好自己的應(yīng)用,打開(kāi)新世界的大門。如果你是一個(gè)任務(wù)導(dǎo)向型的開(kāi)發(fā)者,你可能想跳轉(zhuǎn)到spring.io并且查看getting started指南獲取特定Spring功能使用問(wèn)題的解決方案。我們也有Spring Boot的How-to文檔可以參考。
在Spring Boot repository中也有一些樣例可以運(yùn)行。所有的樣例都是和余下的代碼相獨(dú)立的,你不需要編譯其他的代碼。
另外,邏輯上接下來(lái)應(yīng)該閱讀的內(nèi)容是“使用Spring Boot”,但如果你實(shí)在是缺乏耐心,你也可以直接跳到Spring Boot features。
.