文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡(jiǎn)書
Part II 開始
如果你剛開始學(xué)習(xí)Spring Boot或通常所說的Spring,這部分就是為你準(zhǔn)備的!這部分中我們回答了基本的"what?","how","why?"問題,并在安裝說明中介紹Spring Boot。我們將構(gòu)建第一個(gè)Spring Boot應(yīng)用,討論一些我們遵循的核心原則。
8. Spring Boot介紹
Spring Boot 使創(chuàng)建獨(dú)立的、產(chǎn)品級(jí)的、基于Spring的應(yīng)用變得更容易,你只需要運(yùn)行run
即可。我們采用不變的Spring平臺(tái)和第三方庫,因此你可以幾乎無差別的使用Spring Boot。大多數(shù)Spring Boot應(yīng)用只需要很少的Spring配置。
你可以使用Spring Boot創(chuàng)建Java應(yīng)用,用java-jar
或更傳統(tǒng)的war包來部署應(yīng)用。我們也提供了運(yùn)行"Spring腳本"的命令行工具。
我們的主要目標(biāo)是:
為所有Spring開發(fā)者提供一個(gè)從根本上更迅速可用的入門經(jīng)驗(yàn)。
堅(jiān)持開箱即用,當(dāng)默認(rèn)設(shè)置不滿足需求時(shí)可以快速避免默認(rèn)設(shè)置。
為具有許多類的工程提供一系列常用的非功能特性(例如嵌入式服務(wù)器、安全、度量、健康檢查、外部配置)。
絕對(duì)沒有XML配置代碼產(chǎn)生和XML配置需求。
9. 系統(tǒng)需求
By default, Spring Boot 2.0.0.BUILD-SNAPSHOT requires Java 7 and Spring Framework 5.0.0.BUILD-SNAPSHOT or above. You can use Spring Boot with Java 6 with some additional configuration. See Section 80.11, “How to use Java 6” for more details. Explicit build support is provided for Maven (3.2+) and Gradle (1.12 or 2.x). Gradle 3 is not supported.
默認(rèn)情況下,Spring Boot 2.0.0.BUILD-SNAPSHOT需要Java 7和Spring Framework 5.0.0.BUILD-SNAPSHOT及以上。你可以通過一些額外配置在Java 6下使用Spring Boot。更多細(xì)節(jié)請(qǐng)看80.11小節(jié),"怎樣使用Java 6"。明確的構(gòu)建支持有Maven (3.2+)和Gradle (1.12 or 2.x),不支持Gradle 3。
Although you can use Spring Boot with Java 6 or 7, we generally recommend Java 8 if at all possible.
?
雖然你可以在Java 6或Java 7下使用Spring Boot,但我們建議盡可能的使用Java 8。
9.1 Servlet容器
下面的嵌入式servlet
容器支持開箱即用:
Name | Servlet Version | Java Version |
---|---|---|
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應(yīng)用到任何兼容Servlet 3.0+的容器。
10. 安裝Spring Boot
Spring Boot可以和"經(jīng)典"的Java開發(fā)工具一起使用,也可作為一個(gè)命令行工具來進(jìn)行安裝。不管你是需要Java SDK v.16還是更高版本,在開始之前你應(yīng)該檢查你當(dāng)前安裝的Java版本。
$ java -version
如果你是Java開發(fā)的新手,或你只想嘗試Spring Boot,你可能首先想試一下Spring Boot CLI,否則,請(qǐng)讀"經(jīng)典"的安裝說明。
雖然Spring Boot兼容Java 1.6,但可能的話,你應(yīng)該考慮使用Java的最新版本。
10.1 Java開發(fā)者的安裝說明
你可以使用Spring Boot像使用任何標(biāo)準(zhǔn)Java庫一樣。簡(jiǎn)單的在你的classpath
中包含恰當(dāng)spring-boot-*.jar
即可。Spring Boot不需要任何特定的工具集成,因此你可以使用任何IDE或文本編輯器;Spring Boot應(yīng)用沒有什么特別的,你可以像其它的Java程序一樣來運(yùn)行和調(diào)試。
盡管你可以只拷貝Spring Boot的jars,但通常我們建議你使用一個(gè)支持依賴管理的構(gòu)建工具(例如Maven或Gradle)。
10.1.1 Maven安裝
Spring Boot兼容Apache Maven 3.2或以上。如果你沒有安裝Maven,你可以根據(jù)maven.apache.org的說明來安裝。
在許多操作系統(tǒng)上Maven都能通過包管理器來安裝。如果你是一個(gè)OSX Homebrew用戶可以通過
brew install maven
安裝。Ubuntu用戶可以通過sudo apt-get install maven
安裝。
Spring Boot依賴使用org.springframework.boot
groupId
。通常你的Maven POM文件將繼承spring-boot-starter-parent
工程并聲明一個(gè)或多個(gè)“Starters”依賴。Spring Boot也提供一個(gè)可選的Maven插件來創(chuàng)建可執(zhí)行的jar包。
下面是一個(gè)典型的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>2.0.0.BUILD-SNAPSHOT</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- Add Spring repositories -->
<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
spring-boot-starter-parent
是使用Spring Boot的一種極好的方式,但它可能不是一直都合適的。有時(shí)你可能需要繼承一個(gè)不同的父POM,或者你可能不喜歡我們的默認(rèn)設(shè)置。請(qǐng)看13.2.2小節(jié),『沒有父POM的情況下使用Spring Boot』是一種可替代的解決方案,它使用了import
作用域。
10.1.2 Gradle安裝
Spring Boot兼容Gradle 1.12或2.x。推薦使用2.14.1。不支持Gradle 3。如果你沒有安裝Gradle,你可以根據(jù)www.gradle.org/的介紹來安裝。
Spring Boot依賴使用org.springframework.boot
groupId
。通常你的工程會(huì)聲明一個(gè)或多個(gè)“Starters”依賴。Spring Boot提供了一個(gè)有用的Gradle插件用來簡(jiǎn)化依賴聲明并創(chuàng)建可執(zhí)行的jar包。
Gradle Wrapper
當(dāng)你需要構(gòu)建一個(gè)工程時(shí),Gradle Wrapper提供了一種很好的方式來『獲得』Gradle。它是一小段腳本和庫,并隨著你的代碼一起提交來引導(dǎo)構(gòu)建過程。更多細(xì)節(jié)請(qǐng)看https://docs.gradle.org/2.14.1/userguide/gradle_wrapper.html。
10.2 安裝Spring Boot CLI
Spring Boot CLI是一個(gè)命令行工具,可以用來快速搭建基于Spring的原型。它允許你運(yùn)行Groovy腳本,這意味著你有一個(gè)熟悉的類Java語法,沒有很多的樣本代碼。
你不需要使用CLI來使用Spring Boot但它是開始得到一個(gè)基于Spring應(yīng)用的最快方式。
10.2.1 手動(dòng)安裝
你可以從Spring軟件倉庫下載Spring CLI發(fā)行版:
最新的snapshot distributions也是可獲得的。
一旦下載完成,按照存檔INSTALL.txt中的 介紹來安裝。總結(jié):bin/
目錄的.zip
文件中有一個(gè)spring
腳本(Windows中是spring.bat
),或者你可以使用java -jar
運(yùn)行.jar
文件(這個(gè)腳本幫你確保正確設(shè)置classpath)。
10.2.2 使用SDKMAN!安裝
SDKMAN! (The Software Development Kit Manager)能用來管理各種二進(jìn)制SDKs的多個(gè)版本,包括Groovy和Spring Boot CLI。從sdkman.io中得到SDKMAN!并安裝Spring Boot:
$ sdk install springboot
$ spring --version
Spring Boot v2.0.0.BUILD-SNAPSHOT
如果你在為CLI開發(fā)功能并向很容易的訪問你夠簡(jiǎn)單版本,按照這些額外的介紹去做。
$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-2.0.0.BUILD-SNAPSHOT-bin/spring-2.0.0.BUILD-SNAPSHOT/
$ sdk default springboot dev
$ spring --version
Spring CLI v2.0.0.BUILD-SNAPSHOT
這將會(huì)安裝一個(gè)名為dev
的本地spring
實(shí)例。它指向你的目標(biāo)構(gòu)建位置,因此你每次重新構(gòu)建Spring Boot,spring
將是最新的。
按下面去做你會(huì)看到:
$ sdk ls springboot
================================================================================
Available Springboot Versions
================================================================================
> + dev
* 2.0.0.BUILD-SNAPSHOT
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
10.2.3 OSX Homebrew安裝
如果你在Mac上使用Homebrew,安裝Spring Boot CLI所有你需要做的是:
$ brew tap pivotal/tap
$ brew install springboot
Homebrew會(huì)在/usr/local/bin
目錄安裝spring
。
如果你沒有看到公式,你安裝的brew可能過時(shí)了。執(zhí)行
brew update
并重新再試一次。
10.2.4 MacPorts安裝
如果你在Mac上使用MacPorts,安裝Spring Boot CLI所有你需要做的是:
$ sudo port install spring-boot-cli
10.2.5 命令行實(shí)現(xiàn)
Spring Boot CLI附帶的腳本為BASH和zsh shells提供了命令行實(shí)現(xiàn)。你可以在任何shell中source
腳本(也稱為spring
),或?qū)⑺旁谟脩艋蛳到y(tǒng)范圍內(nèi)的bash完成初始化。在Debian系統(tǒng)中系統(tǒng)范圍內(nèi)的腳本是在/shell-completion/bash
目錄中,當(dāng)新shell啟動(dòng)時(shí),目錄下的所有腳本都被執(zhí)行。如果你裝了SDKMAN!,為了手動(dòng)運(yùn)行腳本,執(zhí)行下面的命令:
$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
grab help jar run test version
如果你想使用Homebrew或MacPorts安裝Spring Boot CLI,命令行完成腳本會(huì)自動(dòng)在shell中注冊(cè)。
10.2.6 快速Spring CLI例子
這兒有一個(gè)真實(shí)的簡(jiǎn)單的web應(yīng)用,你可以用來測(cè)試你的安裝。創(chuàng)建一個(gè)文件叫app.groovy
:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
這兒有一個(gè)真實(shí)的簡(jiǎn)單的web應(yīng)用,你可以用來測(cè)試你的安裝。創(chuàng)建一個(gè)文件叫app.groovy
:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
當(dāng)你第一次運(yùn)行應(yīng)用時(shí)它需要一段時(shí)間,因?yàn)橐螺d依賴。接下來運(yùn)行會(huì)更快。
在你最喜歡的瀏覽器中輸入localhost:8080,你應(yīng)該會(huì)看到下面的結(jié)果:
Hello World!
10.3 從早期的Spring Boot升級(jí)
如果正在升級(jí)你的Spring Boot,檢查project wiki中的『發(fā)布說明』。你將找到升級(jí)說明,說明中有每一次發(fā)布的特性列表。
為了升級(jí)現(xiàn)有的CLI,要使用合適的包管理命令(例如brew upgrade
),如果你手動(dòng)安裝的CLI,要按照標(biāo)準(zhǔn)的說明去做,為了移除舊的引用要記住更新你的PATH環(huán)境變量。