《深刻實踐Spring Boot》第1章 Spring Boot入門

第1章 Spring Boot入門

在使用Spring Boot框架進行各類開發體驗以前,要先配置好開發環境。首先安裝JDK,而後選擇一個開發工具,如Eclipse IDE和IntelliJ IDEA(如下簡稱IDEA)都是不錯的選擇。對於開發工具的選擇,本書極力推薦使用IDEA,由於它爲Spring Boot提供了許多更好和更貼切的支持,本書的實例都是使用IDEA建立的。同時,還須要安裝Apache Maven和Git客戶端。全部這些都準備好以後,咱們就能開始使用Spring Boot了。
java

1.1 配置開發環境

下面的開發環境配置主要以使用Windows操做系統爲例,若是你使用的是其餘操做系統,請對照其相關配置進行操做。git

1.1.1 安裝JDK

JDK(Java SE Development Kit)須要1.8及以上版本,能夠從Java的官網下載安裝包。若是訪問官網速度慢的話,也能夠經過百度搜索JDK,而後在百度軟件中心下載符合你的Windows版本和配置的JDK1.8安裝包。github

安裝完成後,配置環境變量JAVA_HOME,例如,使用路徑D:\Program Files\Java\jkd1.8.0_25(若是你安裝的是這個目錄的話)。JAVA_HOME配置好以後,將%JAVA_HOME%\bin加入系統的環境變量path中。完成後,打開一個命令行窗口,輸入命令java -version,若是能正確輸出版本號則說明安裝成功了。輸出版本的信息以下:web

java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

1.1.2 安裝InterlliJ IDEA

IDEA須要14.0以上的版本,能夠從其官網http://jetbrains.com/ 下載免費版,本書的實例是使用IDEA14.1.15版本開發的。IDEA已經包含Maven插件,版本是3.05,這已經可以適用咱們開發的要求。安裝完成後,打開IDEA,將顯示如圖1-1所示的歡迎界面,在這裏能夠看到IDEA的版本號。spring

圖1-1 InterlliJ IDEA歡迎界面

1.1.3 安裝Apache Maven

爲了可以在命令行窗口中使用Maven來管理工程,能夠安裝一個Maven管理工具。經過Maven的官網http://maven.apache.org/download.cgi 下載3.0.5以上的版本,下載完成後加壓縮便可,例如,解壓到D盤上是不錯的作法,而後將Maven的安裝路徑(如D:\apache-maven-3.2.3\bin)也加入Windows的環境變量path中。安裝完成後,在命令行窗口中執行指令:mvn -v,將輸出以下的版本信息以及系統的一些環境信息。shell

Maven home: C:\Program Files\Maven\bin\..
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_161\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

建議更改IDEA中的Maven資源庫的存放路徑,能夠先在Maven安裝路徑中建立一個資源庫目錄,如repository。而後打開Maven的配置文件,即安裝目錄conf中的settings.xml,找到下列代碼,將路徑更改成repository所在的位置,並保存在註釋符下面。apache

例如找到下列代碼行:windows

<localRepository>/path/to/local/repo</localRepository>

複製出來改成以下所示:瀏覽器

<localRepository>D:\apache-maven-3.2.3\repository</localRepository>

改好後能夠拷貝一份settings.xml放置在${user.home}/.m2/下面,這樣作能夠不用修改IDEA的Maven這個配置。在圖1-2所示的Maven配置界面中,User Settings File保存了默認位置,Local Repository使用了上面配置的路徑D:\apache-maven-3.2.3\repository,而Maven程序仍是使用了IDEA自帶的版本。

image.png

1.1.4 安裝Git客戶端

因爲本書的實例工程都存放在GitHub(https://github.com/)中,因此還須要在GitHub中免費註冊一個用戶(能夠經過E-mail直接註冊免費用戶),以方便在IDEA中從GitHub檢出本書的實例工程。固然,若是不想註冊,經過普通下載的方法也能取得實例工程的源代碼。GitHub是世界級的代碼庫服務器,若是你願意,也能夠將它做爲你的代碼庫服務器,在這裏還能夠搜索到全世界的開發者分享出來的源程序。圖1-3是打開GitHub的首頁。

image.png

IDEA還須要Git客戶端程序的支持。能夠從其官網https://git-scm.com/download/下載Git客戶端安裝包。安裝很是簡單,按提示單擊「下一步」並選擇好安裝路徑便可。安裝完成後,在Windows的資源管理器中,單擊鼠標右鍵彈出的菜單中將會多出以下幾個選擇菜單:

Git Init Here
Git Gui
Git Bash

其中Git Bash是一個帶有UNIX指令行窗口,在這裏能夠執行一些Git指令,用來提交或者檢出項目。

在IDEA中對Git的設置,只要指定git.exe執行文件的位置便可。圖1-4是IDEA中Git客戶端的配置,其中Git的路徑被設置在D:\Program Files\Git\bin\git.exe中,這主要由安裝Git客戶端的位置而定。

image.png

若是已經在GitHub中註冊了用戶,便可以打開如圖1-5所示的GitHub配置,輸入用戶名和密碼,而後單擊Test按鈕,若是設置正確的話將會返回鏈接成功的提示。

image.png

提示:上面IDEA的一些設置界面均可以單擊工具欄上的Settings按鈕打開,打開File菜單,選擇Settings一樣也能夠打開。

1.2 建立項目工程

如今,能夠嘗試使用IDEA來建立一個項目工程。若是是第一次打開IDEA。能夠選擇Create New Project建立一個新工程。若是已經打開了IDEA,在File菜單中選擇New Project,也能打開New Project對話框,如圖1-6所示。使用IDEA建立一個Spring Boot項目有不少方法,這裏只介紹使用Maven和Spring Initalizr兩種方法來建立一個新項目。通常使用Maven來新建一個項目,由於這樣更容易按咱們的要求配置一個項目。

image.png

1.2.1 使用Maven新建項目

使用Maven新建一個項目主要有如下三個步驟。

1. 選擇項目類型

在圖1-6中的Project SDK下拉列表框中選擇前面安裝的Java 1.8,若是下拉列表中不存在Java 1.8,能夠單擊New按鈕,找到安裝Java的位置,選擇它。而後在左面側邊欄的項目類型中,選擇Maven項目,便可使用Maven做爲項目的管理工具。至於Maven中的archetype,由於咱們並不打算使用其中任何一種類型,因此不用勾選,而後單擊Next進入下一步。

2. 輸入GroupId和ArtifactId

在GroupId輸入框中輸入「springboot.example」,在ArtifactId輸入框中輸入」spring-boot-hello「,Version輸入框中保存默認值,如圖1-7所示,單擊Next進入下一步。

image.png

3. 指定項目名稱和存放路徑

在Project location編輯框中選擇和更改存放路徑,在Project name輸入框中輸入與ArtifactId相同的項目名稱:「spring-boot-hello」,如圖1-8所示。

image.png

單擊Finish,完成項目建立,這樣將在當前窗口中打開一個新項目,如圖1-9所示。其中,在工程根目錄中生成了一個pom.xml,即Maven的項目對象模型(Project Object Model),並生成了源代碼目錄java、資源目錄resources和測試目錄test等,即生成了一個項目的一些初始配置和目錄結構。

image.png

下一節將使用這個項目工程來建立第一個使用Spring Boot開發框架的應用實例。

1.2.2 使用Spring Initializr新建項目

新建一個Spring Boot項目,也可使用Spring Initializr的方式,這種方式很簡單,如圖1-10所示。注意Initializr Service URL爲https://start.spring.io,這將會鏈接網絡,以查詢Spring Boot的當前可用版本和組件列表。使用這種方式新建項目大致上也須要三個步驟。

image.png

1. 選擇類型

可使用默認選項,注意Type爲Maven Project,Java Version爲1.8,Packaging爲Jar,如圖1-11所示。單擊Next進入下一步。

image.png

2. 選擇Spring Boot版本和組件

選擇Spring Boot版本和Spring Boot組件,例如,在Spring Boot Version中選擇1.3.5,並勾選Web項目組件,如圖1-12所示,而後單擊Next進入下一步。

image.png

3. 輸入項目名稱

選擇存放路徑後輸入項目名稱,如圖1-13所示,這裏使用demo做爲項目的名稱。

image.png

單擊Finish,將建立一個初始化項目,如圖1-14所示。這個項目不但有完整的目錄結構,還有一個完整的Maven配置,而且生成了一個默認的主程序,幾乎全部的準備工做都已經就緒,而且能夠當即運行(雖然沒有提供任何可用的服務)。這也是Spring Boot引覺得傲的地方,即建立一個應用能夠不用編寫任何代碼,只管運行便可。

image.png

1.3 使用Spring Boot

任何應用的開發都須要對項目的建立、運行和發佈等進行管理,使用Spring Boot框架進行開發,能夠選擇使用Maven或Gradle等項目管理工具。在這裏咱們使用的是Maven。

1.3.1 Maven依賴管理

使用Maven,經過導入Spring Boot的starter模塊,能夠將許多程序依賴包自動導入工程中。使用Maven的parent POM,還能夠更容易地管理依賴的版本和使用默認的配置,工程中的模塊也能夠很方便地繼承它。例如,使用1.2.1節建立的工程,修改pom.xml文件,使用如代碼清單1-1所示的簡單Maven配置,基本上就能爲一個使用Spring Boot開發框架的Web項目開發提供所需的相關依賴。

<?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>springboot.example</groupId>
    <artifactId>spring-boot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.2.RELEASE</version>
    </parent>

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

這裏只使用了一個依賴配置spring-boot-starter-web和一個parent配置spring-boot-starter-parent,在工程的外部庫(External Libraries)列表中,它自動引入的依賴包如代碼清單1-2所示。

image.png

在工程的外部庫列表中,Spring Boot已經導入了整個springframework依賴,以及autoconfigure、logging、slf4j、jackson、tomcat插件等,因此這些都是一個Web項目可能須要用到的東西(包括你已經考慮到的和沒有考慮的),它真是一個聰明的助手。

1.3.2 一個簡單的實例

Spring Boot的官方文檔中提供了一個最簡單的Web實例程序,這個實例只使用了幾行代碼,如代碼清單1-3所示。雖然簡單,但實際上這已經能夠算做是一個完整的Web項目了。

package springboot.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Application {
    @RequestMapping("/")
    String home() {
        return "hello";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

這個簡單實例,首先是一個Spring Boot應用的程序入口,或者叫做主程序,其中使用了一個註解@SpringBootApplication來標註它是一個Spring Boot應用,main方法使它成爲一個主程序,將在應用啓動時首先被執行。其次,註解@RestController同時標註這個程序仍是一個控制器,若是在瀏覽器中訪問應用根目錄,它將調用home方法,並輸出字符串:hello。

1.4 運行與發佈

本章實例工程的完整代碼可使用IDEA直接從GitHub的https://github.com/chenfromsz/spring-boot-hello.git中檢出,如圖1-15所示,單擊Clone按鈕將整個項目複製到本地。

image.png

1.4.1 在IDEA環境中運行

在IDEA中打開Run菜單,選擇Edit Configuration打開Run/Debug Configurations對話框,在配置界面的左邊側邊欄中選擇增長一個Application或Spring Boot配置項目,而後在工做目錄中選擇工程所在的根目錄,主程序選擇代碼清單1-3建立的類:springboot.example.Application,並將配置保存爲hello,如圖1-16所示。

而後選擇Run或Debug運行hello配置項目。若是啓動成功,將在控制檯中輸出相似以下信息:

image.png

從上面的輸出中能夠看出,Tomcat默認開啓了8080端口。要訪問這個應用提供的服務,能夠在瀏覽器的地址欄中輸入http://localhost:8080/。這樣就能夠看到咱們指望的輸出字符:hello。

image.png

1.4.2 將應用打包發佈

上面操做演示了在IDEA環境中如何運行一個應用。若是咱們想把應用發佈出去,須要怎麼作呢?能夠將代碼清單1-1中的Maven配置增長一個發佈插件來實現。如代碼清單1-4所示,增長了一個打包插件:spring-boot-maven-plugin,並增長了一行打包的配置:<packaging>jar</packaging>,這行配置指定將應用工程打包成jar文件。

<?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>springboot.example</groupId>
    <artifactId>spring-boot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.2.RELEASE</version>
    </parent>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

這樣就能夠在IDEA中增長一個打包的配置,打開Run/Debug Configurations對話框,選擇增長配置一個Maven打包項目,在工做目錄中選擇工程所在根目錄,在命令行中輸入package,並將配置保存爲mvn,如圖1-17所示。

image.png

運行mvn打包項目,就能夠將實例工程打包,打包的文件將輸出在工程的target目錄中。

若是已經按照1.1.3節的說明安裝了Maven,也能夠直接使用Maven的命令打包。打開一個命令行窗口,將路徑切換到工程根目錄中,直接在命令行輸入mvn package,一樣也能將項目打包成jar文件。執行結果以下:

……
[INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ spring-boot-hello ---
[INFO] Building jar: C:\Users\shenh\Documents\GitHub\Spring\SpringBoot\spring-boot-hello\target\spring-boot-hello-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.3.2.RELEASE:repackage (default) @ spring-boot-hello ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.497 s
[INFO] Finished at: 2018-11-19T15:41:53+08:00
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

打包成功後,在工程的target目錄中將會生成jar文件spring-boot-hello-1.0-SNAPSHOT.jar。在命令行窗口中切換到target目錄中,運行以下指令,就能啓動應用。

java -jar spring-boot-hello-1.0-SNAPSHOT.jar

若是但願按照傳統的作法,將工程發佈成war文件,應當將代碼清單1-4的Maven配置<packaging>jar</packageing>改爲<packaging>war</packaging>,這樣就能夠打包成war文件。打包完成後將war文件放置在Tomcat的webapp路徑中,啓動Tomcat就能自動運行程序。

這裏須要注意的是,若是自主使用Tomcat運行應用,在安裝JDK時必須配置JAVA_HOME環境變量,同時JDK要求1.8以上的版本,Tomcat必須是8.0以上的版本。

我更加喜歡打包成jar,而後使用Spring Boot的嵌入插件Tomcat運行應用。本書全部實例均可以打包成jar直接運行。即便對於一個包含不少頁面、圖片、腳本等資源的複雜應用系統,這種方法也是可行的,而且打包成jar,更方便項目發佈在Docker上運行,這些將在後面的章節中詳細介紹。

1.5 關於Spring Boot配置

關於Spring Boot配置,能夠在工程的resources文件夾中建立一個application.properties或application.yml文件,這個文件會被髮布在classpath中,而且被Spring Boot自動讀取。這裏推薦使用application.yml文件,由於它提供告終構化及其嵌套的格式,例如,能夠按以下所示配置上面的工程,將默認端口改成80,而且將Tomcat的字符集定義爲UTF-8。

server:
  port: 80
  tomcat:
    uri-encoding: utf-8

若是要使用application.properties文件,上面的配置就要改爲以下所示的樣子,其結果徹底相同。

server.port = 80
server.tomcat.uri-enconding = UTF-8

使用這個配置文件能夠直接使用Spring Boot預約義的一些配置參數,關於其餘配置參數的詳細說明和描述能夠查看官方的文檔說明:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 。在後面的開發中將在用獲得的地方選擇使用這些預約義的配置參數。即便沒有預約義的配置參數可用,也能很容易地按照應用的須要自定義一些配置參數,這將在後續的章節中詳細介紹。

1.6 小結

本章主要介紹了Spring Boot開發環境的搭建,以及一些開發工具的安裝配置,內容不免有點枯燥。而後建立並運行一個很是簡單的實例工程,讓性急的讀者一睹Spring Boot的芳容。

本章實例工程只是使用Spring Boot框架進行開發的很是簡單的入門指引。由於Spring Boot開發框架是一個很是輕量級的開發框架,因此也有人把它叫作微框架,從入門指引中能夠看出,使用Spring Boot框架開發應用不但入門容易,並且其蘊藏的無比強大的功能,使開發過程也變得更加容易。

下面,讓咱們使用Spring Boot框架進行一些更加有趣的開發吧。這一章只是小試牛刀而已,在後續章節中將使用Spring Boot框架來開始一些真正的開發。

---恢復內容結束---

[TOC]

第1章 Spring Boot入門

在使用Spring Boot框架進行各類開發體驗以前,要先配置好開發環境。首先安裝JDK,而後選擇一個開發工具,如Eclipse IDE和IntelliJ IDEA(如下簡稱IDEA)都是不錯的選擇。對於開發工具的選擇,本書極力推薦使用IDEA,由於它爲Spring Boot提供了許多更好和更貼切的支持,本書的實例都是使用IDEA建立的。同時,還須要安裝Apache Maven和Git客戶端。全部這些都準備好以後,咱們就能開始使用Spring Boot了。

1.1 配置開發環境

下面的開發環境配置主要以使用Windows操做系統爲例,若是你使用的是其餘操做系統,請對照其相關配置進行操做。

1.1.1 安裝JDK

JDK(Java SE Development Kit)須要1.8及以上版本,能夠從Java的官網下載安裝包。若是訪問官網速度慢的話,也能夠經過百度搜索JDK,而後在百度軟件中心下載符合你的Windows版本和配置的JDK1.8安裝包。

安裝完成後,配置環境變量JAVA_HOME,例如,使用路徑D:\Program Files\Java\jkd1.8.0_25(若是你安裝的是這個目錄的話)。JAVA_HOME配置好以後,將%JAVA_HOME%\bin加入系統的環境變量path中。完成後,打開一個命令行窗口,輸入命令java -version,若是能正確輸出版本號則說明安裝成功了。輸出版本的信息以下:

java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

1.1.2 安裝InterlliJ IDEA

IDEA須要14.0以上的版本,能夠從其官網http://jetbrains.com/ 下載免費版,本書的實例是使用IDEA14.1.15版本開發的。IDEA已經包含Maven插件,版本是3.05,這已經可以適用咱們開發的要求。安裝完成後,打開IDEA,將顯示如圖1-1所示的歡迎界面,在這裏能夠看到IDEA的版本號。

圖1-1 InterlliJ IDEA歡迎界面

1.1.3 安裝Apache Maven

爲了可以在命令行窗口中使用Maven來管理工程,能夠安裝一個Maven管理工具。經過Maven的官網http://maven.apache.org/download.cgi 下載3.0.5以上的版本,下載完成後加壓縮便可,例如,解壓到D盤上是不錯的作法,而後將Maven的安裝路徑(如D:\apache-maven-3.2.3\bin)也加入Windows的環境變量path中。安裝完成後,在命令行窗口中執行指令:mvn -v,將輸出以下的版本信息以及系統的一些環境信息。

Maven home: C:\Program Files\Maven\bin\..
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_161\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

建議更改IDEA中的Maven資源庫的存放路徑,能夠先在Maven安裝路徑中建立一個資源庫目錄,如repository。而後打開Maven的配置文件,即安裝目錄conf中的settings.xml,找到下列代碼,將路徑更改成repository所在的位置,並保存在註釋符下面。

例如找到下列代碼行:

<localRepository>/path/to/local/repo</localRepository>

複製出來改成以下所示:

<localRepository>D:\apache-maven-3.2.3\repository</localRepository>

改好後能夠拷貝一份settings.xml放置在${user.home}/.m2/下面,這樣作能夠不用修改IDEA的Maven這個配置。在圖1-2所示的Maven配置界面中,User Settings File保存了默認位置,Local Repository使用了上面配置的路徑D:\apache-maven-3.2.3\repository,而Maven程序仍是使用了IDEA自帶的版本。

image.png

1.1.4 安裝Git客戶端

因爲本書的實例工程都存放在GitHub(https://github.com/)中,因此還須要在GitHub中免費註冊一個用戶(能夠經過E-mail直接註冊免費用戶),以方便在IDEA中從GitHub檢出本書的實例工程。固然,若是不想註冊,經過普通下載的方法也能取得實例工程的源代碼。GitHub是世界級的代碼庫服務器,若是你願意,也能夠將它做爲你的代碼庫服務器,在這裏還能夠搜索到全世界的開發者分享出來的源程序。圖1-3是打開GitHub的首頁。

image.png

IDEA還須要Git客戶端程序的支持。能夠從其官網https://git-scm.com/download/下載Git客戶端安裝包。安裝很是簡單,按提示單擊「下一步」並選擇好安裝路徑便可。安裝完成後,在Windows的資源管理器中,單擊鼠標右鍵彈出的菜單中將會多出以下幾個選擇菜單:

Git Init Here
Git Gui
Git Bash

其中Git Bash是一個帶有UNIX指令行窗口,在這裏能夠執行一些Git指令,用來提交或者檢出項目。

在IDEA中對Git的設置,只要指定git.exe執行文件的位置便可。圖1-4是IDEA中Git客戶端的配置,其中Git的路徑被設置在D:\Program Files\Git\bin\git.exe中,這主要由安裝Git客戶端的位置而定。

image.png

若是已經在GitHub中註冊了用戶,便可以打開如圖1-5所示的GitHub配置,輸入用戶名和密碼,而後單擊Test按鈕,若是設置正確的話將會返回鏈接成功的提示。

image.png

提示:上面IDEA的一些設置界面均可以單擊工具欄上的Settings按鈕打開,打開File菜單,選擇Settings一樣也能夠打開。

1.2 建立項目工程

如今,能夠嘗試使用IDEA來建立一個項目工程。若是是第一次打開IDEA。能夠選擇Create New Project建立一個新工程。若是已經打開了IDEA,在File菜單中選擇New Project,也能打開New Project對話框,如圖1-6所示。使用IDEA建立一個Spring Boot項目有不少方法,這裏只介紹使用Maven和Spring Initalizr兩種方法來建立一個新項目。通常使用Maven來新建一個項目,由於這樣更容易按咱們的要求配置一個項目。

image.png

1.2.1 使用Maven新建項目

使用Maven新建一個項目主要有如下三個步驟。

1. 選擇項目類型

在圖1-6中的Project SDK下拉列表框中選擇前面安裝的Java 1.8,若是下拉列表中不存在Java 1.8,能夠單擊New按鈕,找到安裝Java的位置,選擇它。而後在左面側邊欄的項目類型中,選擇Maven項目,便可使用Maven做爲項目的管理工具。至於Maven中的archetype,由於咱們並不打算使用其中任何一種類型,因此不用勾選,而後單擊Next進入下一步。

2. 輸入GroupId和ArtifactId

在GroupId輸入框中輸入「springboot.example」,在ArtifactId輸入框中輸入」spring-boot-hello「,Version輸入框中保存默認值,如圖1-7所示,單擊Next進入下一步。

image.png

3. 指定項目名稱和存放路徑

在Project location編輯框中選擇和更改存放路徑,在Project name輸入框中輸入與ArtifactId相同的項目名稱:「spring-boot-hello」,如圖1-8所示。

image.png

單擊Finish,完成項目建立,這樣將在當前窗口中打開一個新項目,如圖1-9所示。其中,在工程根目錄中生成了一個pom.xml,即Maven的項目對象模型(Project Object Model),並生成了源代碼目錄java、資源目錄resources和測試目錄test等,即生成了一個項目的一些初始配置和目錄結構。

image.png

下一節將使用這個項目工程來建立第一個使用Spring Boot開發框架的應用實例。

1.2.2 使用Spring Initializr新建項目

新建一個Spring Boot項目,也可使用Spring Initializr的方式,這種方式很簡單,如圖1-10所示。注意Initializr Service URL爲https://start.spring.io,這將會鏈接網絡,以查詢Spring Boot的當前可用版本和組件列表。使用這種方式新建項目大致上也須要三個步驟。

image.png

1. 選擇類型

可使用默認選項,注意Type爲Maven Project,Java Version爲1.8,Packaging爲Jar,如圖1-11所示。單擊Next進入下一步。

image.png

2. 選擇Spring Boot版本和組件

選擇Spring Boot版本和Spring Boot組件,例如,在Spring Boot Version中選擇1.3.5,並勾選Web項目組件,如圖1-12所示,而後單擊Next進入下一步。

image.png

3. 輸入項目名稱

選擇存放路徑後輸入項目名稱,如圖1-13所示,這裏使用demo做爲項目的名稱。

image.png

單擊Finish,將建立一個初始化項目,如圖1-14所示。這個項目不但有完整的目錄結構,還有一個完整的Maven配置,而且生成了一個默認的主程序,幾乎全部的準備工做都已經就緒,而且能夠當即運行(雖然沒有提供任何可用的服務)。這也是Spring Boot引覺得傲的地方,即建立一個應用能夠不用編寫任何代碼,只管運行便可。

image.png

1.3 使用Spring Boot

任何應用的開發都須要對項目的建立、運行和發佈等進行管理,使用Spring Boot框架進行開發,能夠選擇使用Maven或Gradle等項目管理工具。在這裏咱們使用的是Maven。

1.3.1 Maven依賴管理

使用Maven,經過導入Spring Boot的starter模塊,能夠將許多程序依賴包自動導入工程中。使用Maven的parent POM,還能夠更容易地管理依賴的版本和使用默認的配置,工程中的模塊也能夠很方便地繼承它。例如,使用1.2.1節建立的工程,修改pom.xml文件,使用如代碼清單1-1所示的簡單Maven配置,基本上就能爲一個使用Spring Boot開發框架的Web項目開發提供所需的相關依賴。

<?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>springboot.example</groupId>
    <artifactId>spring-boot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.2.RELEASE</version>
    </parent>

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

這裏只使用了一個依賴配置spring-boot-starter-web和一個parent配置spring-boot-starter-parent,在工程的外部庫(External Libraries)列表中,它自動引入的依賴包如代碼清單1-2所示。

image.png

在工程的外部庫列表中,Spring Boot已經導入了整個springframework依賴,以及autoconfigure、logging、slf4j、jackson、tomcat插件等,因此這些都是一個Web項目可能須要用到的東西(包括你已經考慮到的和沒有考慮的),它真是一個聰明的助手。

1.3.2 一個簡單的實例

Spring Boot的官方文檔中提供了一個最簡單的Web實例程序,這個實例只使用了幾行代碼,如代碼清單1-3所示。雖然簡單,但實際上這已經能夠算做是一個完整的Web項目了。

package springboot.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Application {
    @RequestMapping("/")
    String home() {
        return "hello";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

這個簡單實例,首先是一個Spring Boot應用的程序入口,或者叫做主程序,其中使用了一個註解@SpringBootApplication來標註它是一個Spring Boot應用,main方法使它成爲一個主程序,將在應用啓動時首先被執行。其次,註解@RestController同時標註這個程序仍是一個控制器,若是在瀏覽器中訪問應用根目錄,它將調用home方法,並輸出字符串:hello。

1.4 運行與發佈

本章實例工程的完整代碼可使用IDEA直接從GitHub的https://github.com/chenfromsz/spring-boot-hello.git中檢出,如圖1-15所示,單擊Clone按鈕將整個項目複製到本地。

image.png

1.4.1 在IDEA環境中運行

在IDEA中打開Run菜單,選擇Edit Configuration打開Run/Debug Configurations對話框,在配置界面的左邊側邊欄中選擇增長一個Application或Spring Boot配置項目,而後在工做目錄中選擇工程所在的根目錄,主程序選擇代碼清單1-3建立的類:springboot.example.Application,並將配置保存爲hello,如圖1-16所示。

而後選擇Run或Debug運行hello配置項目。若是啓動成功,將在控制檯中輸出相似以下信息:

image.png

從上面的輸出中能夠看出,Tomcat默認開啓了8080端口。要訪問這個應用提供的服務,能夠在瀏覽器的地址欄中輸入http://localhost:8080/。這樣就能夠看到咱們指望的輸出字符:hello。

image.png

1.4.2 將應用打包發佈

上面操做演示了在IDEA環境中如何運行一個應用。若是咱們想把應用發佈出去,須要怎麼作呢?能夠將代碼清單1-1中的Maven配置增長一個發佈插件來實現。如代碼清單1-4所示,增長了一個打包插件:spring-boot-maven-plugin,並增長了一行打包的配置:<packaging>jar</packaging>,這行配置指定將應用工程打包成jar文件。

<?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>springboot.example</groupId>
    <artifactId>spring-boot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.2.RELEASE</version>
    </parent>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

這樣就能夠在IDEA中增長一個打包的配置,打開Run/Debug Configurations對話框,選擇增長配置一個Maven打包項目,在工做目錄中選擇工程所在根目錄,在命令行中輸入package,並將配置保存爲mvn,如圖1-17所示。

image.png

運行mvn打包項目,就能夠將實例工程打包,打包的文件將輸出在工程的target目錄中。

若是已經按照1.1.3節的說明安裝了Maven,也能夠直接使用Maven的命令打包。打開一個命令行窗口,將路徑切換到工程根目錄中,直接在命令行輸入mvn package,一樣也能將項目打包成jar文件。執行結果以下:

……
[INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ spring-boot-hello ---
[INFO] Building jar: C:\Users\shenh\Documents\GitHub\Spring\SpringBoot\spring-boot-hello\target\spring-boot-hello-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.3.2.RELEASE:repackage (default) @ spring-boot-hello ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.497 s
[INFO] Finished at: 2018-11-19T15:41:53+08:00
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

打包成功後,在工程的target目錄中將會生成jar文件spring-boot-hello-1.0-SNAPSHOT.jar。在命令行窗口中切換到target目錄中,運行以下指令,就能啓動應用。

java -jar spring-boot-hello-1.0-SNAPSHOT.jar

若是但願按照傳統的作法,將工程發佈成war文件,應當將代碼清單1-4的Maven配置<packaging>jar</packageing>改爲<packaging>war</packaging>,這樣就能夠打包成war文件。打包完成後將war文件放置在Tomcat的webapp路徑中,啓動Tomcat就能自動運行程序。

這裏須要注意的是,若是自主使用Tomcat運行應用,在安裝JDK時必須配置JAVA_HOME環境變量,同時JDK要求1.8以上的版本,Tomcat必須是8.0以上的版本。

我更加喜歡打包成jar,而後使用Spring Boot的嵌入插件Tomcat運行應用。本書全部實例均可以打包成jar直接運行。即便對於一個包含不少頁面、圖片、腳本等資源的複雜應用系統,這種方法也是可行的,而且打包成jar,更方便項目發佈在Docker上運行,這些將在後面的章節中詳細介紹。

1.5 關於Spring Boot配置

關於Spring Boot配置,能夠在工程的resources文件夾中建立一個application.properties或application.yml文件,這個文件會被髮布在classpath中,而且被Spring Boot自動讀取。這裏推薦使用application.yml文件,由於它提供告終構化及其嵌套的格式,例如,能夠按以下所示配置上面的工程,將默認端口改成80,而且將Tomcat的字符集定義爲UTF-8。

server:
  port: 80
  tomcat:
    uri-encoding: utf-8

若是要使用application.properties文件,上面的配置就要改爲以下所示的樣子,其結果徹底相同。

server.port = 80
server.tomcat.uri-enconding = UTF-8

使用這個配置文件能夠直接使用Spring Boot預約義的一些配置參數,關於其餘配置參數的詳細說明和描述能夠查看官方的文檔說明:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 。在後面的開發中將在用獲得的地方選擇使用這些預約義的配置參數。即便沒有預約義的配置參數可用,也能很容易地按照應用的須要自定義一些配置參數,這將在後續的章節中詳細介紹。

1.6 小結

本章主要介紹了Spring Boot開發環境的搭建,以及一些開發工具的安裝配置,內容不免有點枯燥。而後建立並運行一個很是簡單的實例工程,讓性急的讀者一睹Spring Boot的芳容。

本章實例工程只是使用Spring Boot框架進行開發的很是簡單的入門指引。由於Spring Boot開發框架是一個很是輕量級的開發框架,因此也有人把它叫作微框架,從入門指引中能夠看出,使用Spring Boot框架開發應用不但入門容易,並且其蘊藏的無比強大的功能,使開發過程也變得更加容易。

下面,讓咱們使用Spring Boot框架進行一些更加有趣的開發吧。這一章只是小試牛刀而已,在後續章節中將使用Spring Boot框架來開始一些真正的開發。

相關文章
相關標籤/搜索