Spring Boot 官網(wǎng)文檔簡單翻譯 Part II

Part II. Getting Started

文檔說明:

  • 文檔對(duì)應(yīng)的版本為 2.1.0.M3
  • 這不是文檔的完整中文翻譯,也有可能跟原文文字不一一對(duì)應(yīng),只是我閱讀文檔時(shí)候做的簡單筆記
  • 如果對(duì)應(yīng)的章節(jié)沒有任何中文,有可能是文檔內(nèi)容比較少,建議直接看原文,或者是我不感興趣的部分
  • 目錄標(biāo)題沒有做翻譯,首先標(biāo)題一般一眼就能看懂什么意思,不做翻譯還能保證原文意思,其次也方便對(duì)應(yīng)到原文位置

8. Introducing Spring Boot

Spring Boot 讓創(chuàng)建一個(gè)獨(dú)立的、生產(chǎn)級(jí)別的、基于 Spring 的應(yīng)用更加容易。
主要目標(biāo):

  • 對(duì)于開發(fā)所有的 Spring 應(yīng)用,提供一個(gè)非??旌头浅H菀桌斫獾捏w驗(yàn)
  • 能快速適應(yīng)需求變化
  • 提供大量非業(yè)務(wù)邏輯的通用功能,例如內(nèi)嵌服務(wù),安全,統(tǒng)計(jì),健康檢查和外部配置
  • 絕對(duì)沒有代碼生成和XML配置 (原文:Absolutely no code generation and no requirement for XML configuration)

9. System Requirements

Spring Boot 2.1.0.M3 requires Java 8 or 9 and Spring Framework 5.1.0.RC3 or above.
其他版本的 Spring Boot 請(qǐng)參看對(duì)應(yīng)版本的文檔。

10. Installing Spring Boot

JDK 1.8 or Spring Boot CLI(Command Line Interface)

10.1 Installation Instructions for the Java Developer

可以把相關(guān)的 spring-boot-*.jar 拷貝到 classpath,但推薦使用構(gòu)建工具。

10.1.1 Maven Installation

Spring Boot 依賴于 groupId 為 org.springframework.boot 的組件。
一般來說都是依賴 spring-boot-starter-parent 組件,也可以根據(jù)需要添加更多的 Starter。
spring-boot-starter-parent 并不總是適用,可以參考 “Using Spring Boot without the Parent POM” 章節(jié)

<?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.1.0.M3</version>
    </parent>
    ...
<project/>

10.1.2 Gradle Installation

依賴的東西是一樣的,但是配置的語法有所不一樣

10.2 Installing the Spring Boot CLI

Spring Boot CLI 是一個(gè)可以運(yùn)行 Groovy 腳本來快速獲取 Spring 應(yīng)用的工具。

10.2.1 Manual Installation

10.2.2 Installation with SDKMAN!

SDKMAN:The Software Development Kit Manager
SDKMAN 用來管理多個(gè)版本的二進(jìn)制 SDK,包括 Groovy 和 Spring Boot CLI。
從 sdkman.io 安裝 SDKMAN,然后運(yùn)行下面的腳本

$ sdk install springboot
$ spring --version
Spring Boot v2.1.0.M3

10.2.3 OSX Homebrew Installation

10.2.4 MacPorts Installation

10.2.5 Command-line Completion

10.2.6 Windows Scoop Installation

10.2.7 Quick-start Spring CLI Example

@RestController
class ThisWillActuallyRun {
    @RequestMapping("/")
    String home() {
        "Hello World!"
    }
}

Then run it from a shell, and Open localhost:8080 in your favorite web browser to check the status

$ spring run app.groovy

10.3 Upgrading from an Earlier Version of Spring Boot

如果你想從一個(gè)比較舊的版本升級(jí)到比較新的版本,建議先查閱官方的 "migration guide" on the project wiki

Spring 提供了一個(gè)分析你的應(yīng)用環(huán)境并打印出來建議的方法,還可以臨時(shí)遷移屬性。啟用這個(gè)功能,需要添加如下配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-properties-migrator</artifactId>
    <scope>runtime</scope>
</dependency>

11. Developing Your First Spring Boot Application

開發(fā)你的第一個(gè) Spring Boot 應(yīng)用:通過一個(gè)簡單的 HelloWorld Web 應(yīng)用,介紹 Spring Boot 的關(guān)鍵特性。
建議先檢查一下 java 和 maven 的版本:

# Java 要求 1.8 或者以上
java -version
# Maven 要求 3.2 或者以上
mvn -v

11.1 Create the POM

POM 文件可看做是你項(xiàng)目的“食譜”。

<?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>2.1.0.M3</version>
    </parent>

    <!-- Additional lines to be added here... -->

    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>

上面的例子應(yīng)該給到你一個(gè)可以工作的構(gòu)建,可以通過 mvn package 來驗(yàn)證一下。你也可以在你熟悉的 IDE 添加這些內(nèi)容。

11.2 Adding Classpath Dependencies

Spring Boot 提供了很多 Starters 來讓你添加 jar 依賴到你的 classpath。文檔上面的應(yīng)用例子已經(jīng)在 POM 文件里面的 parent 節(jié)點(diǎn)使用了 spring-boot-starter-parent。這個(gè) spring-boot-starter-parent 是一個(gè)特殊的 starter,它提供了很多有用的 Maven 默認(rèn)值。文檔后面還提供了 "13.1 Dependency Management" 章節(jié)來介紹依賴管理,你可以在引入依賴的時(shí)候忽略版本號(hào)。
當(dāng)開發(fā)特定類型的應(yīng)用時(shí),其他 "Starters" 會(huì)提供你需要的依賴。例如我們要開發(fā)一個(gè) Web 應(yīng)用,我們會(huì)添加 spring-boot-starter-web 的 starter 依賴。在這之前,我們可以查看現(xiàn)在項(xiàng)目都有哪些依賴

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree 命令會(huì)打印并以樹形展示你項(xiàng)目的依賴,添加 spring-boot-starter-web 后,再執(zhí)行該命令看下輸出

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

11.3 Writing the Code

Maven 默認(rèn)會(huì)從 src/main/java 目錄編譯代碼。
src/main/Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
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);
    }

}

11.3.1 The @RestController and @RequestMapping Annotations

Example.java 的第一個(gè)注解 @RestController 是一個(gè) stereotype 注解,它向閱讀代碼的人和 Spring 表明了它在充當(dāng) Web 應(yīng)用的 @Controller 角色。
@RequestMapping 注解提供了“路由”信息。它告訴 Spring 所有帶有 "/" 的 HTTP 請(qǐng)求都應(yīng)該映射到 home 路徑。@RestController 注解告訴 Spring 應(yīng)該渲染結(jié)果內(nèi)容并直接返回給調(diào)用方。
@RestController 和 @RequestMapping 都是 Spring MVC 的注解,并不是 Spring Boot 特有的注解。

11.3.2 The @EnableAutoConfiguration Annotation

@EnableAutoConfiguration 注解告訴 Spring Boot 根據(jù)你引入的 jar 依賴去“猜猜”你想怎樣配置 Spring。spring-boot-starter-web 會(huì)自動(dòng)引入 Tomcat 和 Spring MVC 組件,Spring Boot 的自動(dòng)裝配機(jī)制會(huì)認(rèn)為你在開發(fā)一個(gè) Web 應(yīng)用。

Starters and Auto-configuration:Auto-configuration 是被設(shè)計(jì)來和 starter 協(xié)作的,但這兩個(gè)概念并不是直接綁定的。你可以選擇不以 starter 的方式來添加 jar 依賴,Spring Boot 的 Auto-configuration 仍然會(huì)做好其本分工作。

11.3.3 The "main" Method

例子代碼的最后部分就是 main 方法。這個(gè) main 方法只是 Java 代碼運(yùn)行的主入口。我們的 main 方法委托給了 Spring Boot's SpringApplication.run() 方法。SpringApplication 啟動(dòng)了應(yīng)用。

11.4 Running the Example

到了這里,你的應(yīng)用可以運(yùn)行了。由于引用了 spring-boot-starter-parent,你會(huì)擁有啟動(dòng)應(yīng)用的 run 腳本。在應(yīng)用根目錄下輸入 mvn spring-boot:run 命令,然后在瀏覽器 輸入 localhost:8080 驗(yàn)證服務(wù)是否啟動(dòng)成功。

$ mvn spring-boot:run

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.0.M3)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

11.5 Creating an Executable Jar

Executable jar 是包含編譯的 class 文件和所有 jar 依賴文件的 jar。

Java 沒有提供關(guān)于加載嵌入 jar 文件(在 jar 文件里面包含另外的 jar 文件)的標(biāo)準(zhǔn),命令行這種 jar 文件在不解壓就在就可能會(huì)有問題。
為解決這個(gè)問題,很多開發(fā)者都通過共享 jar 的形式來處理。一個(gè)共享的 jar 包含了所有的類和 jar,并放進(jìn)一個(gè) jar 文件里面。這樣你很難知道里面包含了多少庫的依賴,而且還可能有文件重名的問題。
Spring Boot 采取了不同的做法,它讓你直接內(nèi)嵌 jar 文件。

為了創(chuàng)建一個(gè)可執(zhí)行 jar 文件,需要在 POM 文件添加一個(gè)插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

通過 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:2.1.0.M3:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如同日志輸出的內(nèi)容顯示,打包好的文件會(huì)輸出到 target/myproject-0.0.1-SNAPSHOT.jar。
可以解壓該 jar 文件看看里面的內(nèi)容:

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

運(yùn)行該 jar 文件:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.0.M3)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

12. What to Read Next

相關(guān)文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容