(二)Spring Boot 起步入門(翻譯自Spring Boot官方教程文檔)1.5.9.RELEASE

  • 查看本文英文文檔,請點擊 me
  • 本文將在對原英文文檔進行翻譯的基礎上,結合做者動手實踐一步步圖文並茂展現給你們!
  • 小弟學識尚淺,若文章有不對的地方,請幫小弟指出,很是感謝!

第二部分 Spring Boot 入門

  • 若是你正準備入門 Spring Boot,或者一般說是‘Spring’,那這章節將是你學習的好材料。本章節將回答諸如 Spring Boot 是什麼?怎麼作?爲何?等基本問題。你將會獲得一個優雅的、關於 Spring Boot 的介紹說明以及安裝文檔。緊接着咱們將一塊兒構建咱們的第一個 Spring Boot 應用程序並討論一些核心的原則。

八、介紹 Spring Boot

  • Spring Boot 使你能夠輕鬆地建立一個僅僅運行 java run(main方法) 的獨立的、生產級的基於 Spring 的應用程序。咱們對Spring平臺和第三方庫有本身的見解,因此你能夠從最小的錯誤代價開始學習 Spring Boot。 大多數 Spring Boot 應用程序只須要不多的Spring配置。
  • 你可使用 Spring Boot 建立一個使用 java -jar 運行的 Java 應用程序或者傳統的 war 包。咱們還提供了一個運行 「spring scripts」 的命令行工具。
  • 咱們的主要目標是:
    1. 爲全部Spring開發提供一個更快,更普遍的入門體驗。
    2. 開箱即用,但隨着需求開始偏離默認設置,快速退出(也就是本身作些其餘配置)。
    3. 提供大量普遍使用的非功能特性(如嵌入式服務器,安全、指標、運行狀態檢查、外部配置等)
    4. 沒有代碼生成也不須要xml配置

九、系統要求

  • 默認狀況下,Spring Boot 1.5.9.RELEASE須要 Java 7 和Spring Framework 4.3.13.RELEASE或更高版本。 您可使用帶有Java 6的Spring Boot以及其餘一些配置。 有關更多詳細信息,請參見 Section 84.11, 「How to use Java 6"。 爲Maven(3.2+)和Gradle 2(2.9或更高版本)和3提供了明確的構建支持。

    雖然可使用Java 6或7的構建Spring Boot,可是咱們一般推薦使用Java 8。html

9.1 Servlet 容器

如下嵌入式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應用程序部署到任何與Servlet 3.0+兼容的容器。

十、安裝 Spring Boot

  • Spring Boot能夠與「經典」Java開發工具一塊兒使用,也能夠做爲命令行工具安裝。不管如何,您將須要Java SDK v1.6或更高版本。 在開始以前,您應該檢查您當前的Java安裝版本:git

    java -versiongithub

  • 若是您對Java開發不熟悉,或者您只是想嘗試 Spring Boot,則可能須要先嚐試 Spring Boot CLI,不然請閱讀'經典'安裝說明。web

儘管Spring Boot與Java 1.6兼容,但若是可能的話,應該考慮使用最新版本的Java。spring

10.一、給Java開發人員的安裝說明

  • 您能夠像使用任何標準Java庫同樣使用Spring Boot。你只需在你的類路徑中包含相應的spring-boot-*.jar文件便可。Spring Boot不須要任何特殊的工具集成,因此你可使用任何IDE或文本編輯器; Spring Boot應用程序沒有什麼特別之處,因此您能夠像運行其餘任何Java程序同樣運行和調試。
  • 儘管您能夠拷貝Spring Boot jar包到你本身的項目中,但咱們一般建議您使用支持依賴管理的構建工具(如Maven或Gradle)。

10.1.1 Maven 安裝

  • Spring Boot與Apache Maven 3.2或更高版本兼容。 若是您尚未安裝Maven,您能夠按照maven.apache.org上的說明進行操做。

在許多操做系統上,Maven能夠經過包管理器來安裝。 若是您是OSX Homebrew用戶,請嘗試brew install maven。 Ubuntu用戶能夠運行sudo apt-get install mavenapache

  • Spring Boot 依賴使用 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」數組

10.1.二、Gradle安裝

  • Spring Boot與Gradle 2(2.9或更高版本)和Gradle 3兼容。若是您還沒有安裝Gradle,則能夠按照www.gradle.org/上的說明進行操做。
  • Spring Boot 依賴可使用 org.springframework.boot group進行聲明。一般,您的項目將聲明依賴關係到一個或多個Starters。 Spring Boot提供了一個有用的Gradle插件,能夠用來簡化依賴聲明和建立可執行的jar。

    Gradle Wrapper

    Gradle Wrapper提供了一種在須要構建項目時「獲取」Gradle的好方法。 這是一個小腳本和庫,與代碼一塊兒提交以引導構建過程。 有關詳細信息,請參閱docs.gradle.org/2.14.1/user…瀏覽器

  • 這是一個典型的build.gradle文件:
    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")
    }
    複製代碼

10.二、安裝 Spring Boot CLI

  • Spring Boot CLI是一個命令行工具,若是你想用Spring來快速建立原型,可使用它。它容許你運行Groovy腳本,這意味着你有一個熟悉的類Java語法,沒有太多的樣板代碼。
  • 您能夠不須要使用CLI來使用Spring Boot,但它絕對是建立Spring應用程序的最快捷方式。

10.2.一、手動安裝

10.三、從早期版本的Spring Boot升級(即Spring Boot 版本的升級)

  • 若是您是從早期版本的Spring Boot進行升級,請查看project wiki上託管的「release notes」。 您會發現升級說明以及每一個版本的‘新增長、值得注意’的特性列表。
  • 要升級現有的CLI安裝,請使用相應的package manager命令(例如brew upgrade),或者若是您手動安裝了CLI,請按照standard instructions記住更新PATH環境變量以刪除全部舊的引用。

十一、開發咱們的第一個 Spring Boot 應用程序

  • 咱們用Java開發一個簡單的「Hello World!」Web應用程序,重點介紹Spring Boot的一些關鍵特性。 咱們將使用Maven來構建這個項目,由於大多數IDE都支持它。

    spring.io網站包含許多使用Spring Boot的「入門指南」。 若是你想解決一個特定的問題, 先在那裏檢查。 您能夠經過轉到start.spring.io並從依賴關係搜索器中選擇Webstarter來快速執行如下步驟。 這將自動生成一個新的項目結構,以便您能夠當即開始編碼檢查文檔以獲取更多詳細信息。安全

  • 在咱們開始以前,請打開命令終端,檢查是否安裝了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
    複製代碼

    此示例須要在其本身的文件夾中建立。 後續的說明假定你已經建立了一個合適的文件目錄(其實就是標準的maven,咱們也能夠經過start.spring.io自動生成項目目錄,小編接下來會截圖給你們看),而且保證命令行終端是你的「當前目錄」(也就是項目根目錄,小編是在boot目錄下)。

  • 小編的目錄結構以下:
    - boot
        - src
            - main
                - java
                    - Example.java
            - test
                - java
        - pom.xml
        
    複製代碼

11.一、建立POM文件

  • 咱們須要從建立一個Maven 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的內置支持)。 爲了簡單起見,咱們將繼續在這個例子中使用純文本編輯器。

11.二、添加classpath依賴關係

  • Spring Boot提供了許多starters,咱們能夠很方便地將jar添加到你的classpath中。 咱們的示例應用程序已經在POM的父節點中使用了spring-boot-starter-parentspring-boot-starter-parent是一個特別的starter,提供了有用的Maven默認值。 它還提供了一個dependency-management 功能,以便您能夠省略version標記以得到「blessed(好的意思吧!)」的依賴關係。
  • 其餘「starter」只是提供開發特定類型的應用程序(好比web嘛!)時可能須要的依賴關係。因爲咱們正在開發一個Web應用程序,咱們將添加一個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自己。

11.三、開始寫代碼

  • 爲了完成咱們的應用程序,咱們須要建立一個Java文件。 Maven默認會從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);
        }
    
    }
    複製代碼
  • 雖然這裏沒有太多的代碼,但仍是有不少。 咱們來看看重要的部分。

11.3.1 @RestController@RequestMapping註解

  • 在咱們的class中,第一個註解就是@RestController。這是一個stereotype(好像是API中的一個包名)註解。這個註解給閱讀這個class代碼的開發人員一種提示(簡單地講就是代表這個類是什麼),但對於 Spring 來講,它代表該類扮演者一個重要的角色。在咱們的例子中,它代表咱們的類是一個web @Controller,因此Spring在處理傳入的Web請求時會考慮它。
  • @RequestMapping註釋提供了「路由」信息。 它告訴Spring,任何具備路徑「/」的HTTP請求都應該映射到home方法。 @RestController註釋告訴Spring將結果字符串直接返回給調用者。

    @RestController@RequestMapping註解是Spring MVC註釋(它們不是Spring Boot特有的)。 有關更多詳細信息,請參閱Spring參考資料中的MVC部分

11.3.二、@EnableAutoConfiguration註解

  • 第二個類級別的註解是@EnableAutoConfiguration。 這個註解告訴Spring Boot根據你添加的jar依賴來「猜想」你將如何配置Spring。 因爲spring-boot-starter-web添加了Tomcat和Spring MVC,因此自動配置會假定你正在開發一個Web應用程序並相應地配置Spring。

    > Starters and Auto-Configuration

  • 自動配置旨在與starters配合使用,但這兩個概念並不直接相關。 您能夠自由選擇和選擇starter以外的jar依賴項,而且Spring Boot將盡其所能地自動配置到您的應用程序當中。

11.3.三、main 方法

  • 咱們的應用程序的最後一部分是 main 方法。這只是一個遵循Java約定的應用程序入口點的標準方法。 咱們的 main 方法經過調用run來委託Spring Boot的SpringApplication類。 SpringApplication將引導咱們的應用程序,開啓Spring並繼而轉向啓動自動配置的Tomcat Web服務器。 咱們須要將Example.class做爲參數傳遞給run方法,以告知SpringApplication是Spring的主要組件。 args數組也被傳遞以暴露任何命令行參數。

11.四、運行咱們的應用程序

  • 到這裏咱們的應用程序應該是能夠運行了。因爲咱們使用了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) 複製代碼
  • 若是你打開一個web瀏覽器到localhost:8080你應該看到下面的輸出:
    Hello World!
    複製代碼
  • 要正常退出應用,按住鍵盤ctrl+c便可。

11.五、建立一個可執行的 jar 文件

  • 讓咱們經過建立一個徹底獨立的可執行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

十二、接下來要讀什麼?

  • 但願本節爲您提供了一些Spring Boot的基礎知識,並幫助您編寫本身的應用程序。 若是您是面向任務的開發人員,則可能須要跳至spring.io,並查看一些入門指南,以解決具體的「如何使用Spring」問題; 咱們也有Spring Boot特定的How - to指南文檔。
  • Spring Boot版本庫也有一些你能夠運行的例子。 例子獨立於代碼的其他部分(也就是說,您不須要構建其他的代碼來運行或使用例子)。
  • 不然,下一個邏輯步驟是閱讀第三部分「使用Spring Boot」。 若是你真的不耐煩,也能夠跳過來閱讀Spring Boot的特性
相關文章
相關標籤/搜索