1. 程式人生 > >使用 Spring Initializr 初始化 Spring Boot 專案 -- 轉載至https://blog.csdn.net/caodameng_csdn/article/details/

使用 Spring Initializr 初始化 Spring Boot 專案 -- 轉載至https://blog.csdn.net/caodameng_csdn/article/details/

      萬事開頭難,你需要設定一個目錄結構存放各種專案內容,建立構建檔案,並在其中加入各
種依賴。Spring Boot CLI消除了不少設定工作,但如果你更傾向於傳統Java專案結構,那你應該
看看Spring Initializr。
Spring Initializr從本質上來說就是一個Web應用程式,它能為你生成Spring Boot專案結構。雖
然不能生成應用程式程式碼,但它能為你提供一個基本的專案結構,以及一個用於構建程式碼的
Maven或Gradle構建說明檔案。你只需要寫應用程式的程式碼就好了。
Spring Initializr有幾種用法。
 通過Web介面使用。
 通過Spring Tool Suite使用。
 通過IntelliJ IDEA使用。
 使用Spring Boot CLI使用。
下面分別看看這幾種用法,先從Web介面開始。

1. 使用Spring Initializr的Web介面

    要使用Spring Initializr,最直接的辦法就是用瀏覽器開啟http://start.spring.io,你應該能看到

類似圖1-1的一個表單。

    表單的頭兩個問題是,你想用Maven還是Gradle來構建專案,以及使用Spring Boot的哪個版
本。程式預設生成Maven專案,並使用Spring Boot的最新版本(非里程碑和快照版本),但你也可
以自由選擇其他選項。
    表單左側要你指定專案的一些基本資訊。最起碼你要提供專案的Group和Artifact,但如果你
點選了“Switch to the full version”連結,還可以指定額外的資訊,比如版本號和基礎包名。這些

資訊是用來生成Maven的pom.xml檔案(或者Gradle的build.gradle檔案)的。



                    圖1-1 Spring Initializr是生成空Spring專案的Web應用程式,可以視為開發過程的第一步

        表單右側要你指定專案依賴,最簡單的方法就是在文字框裡鍵入依賴的名稱。隨著你的輸入
會出現匹配依賴的列表,選中一個(或多個)依賴,選中的依賴就會加入專案。如果找不到你要
的依賴,點選“Switch to the full version”就能看到可用依賴的完整列表。
        要是你瞄過一眼附錄B,就會發現這裡的依賴和Spring Boot起步依賴是對應的。實際上,在
這裡選中依賴,就相當於告訴Initializr把對應的起步依賴加到專案的構建檔案裡。(第2章會進一
步討論Spring Boot起步依賴。)
        填完表單,選好依賴,點選“Generate Project”按鈕,Spring Initializr就會為你生成一個專案。
瀏覽器將會以ZIP檔案的形式(檔名取決於Artifact欄位的內容)把這個專案下載下來。根據你的選擇,ZIP檔案的內容也會略有不同。不管怎樣,ZIP檔案都會包含一個極其基礎的專案,讓你
能著手使用Spring Boot開發應用程式。
舉例來說,假設你在Spring Initializr裡指定了如下資訊。
 Artifact:myapp
 包名:myapp
 型別:Gradle專案
 依賴:Web和JPA
點選“Generate Project”,就能獲得一個名為myapp.zip的ZIP檔案。解壓後的專案結構同圖1-2

類似。


                                圖1-2 Initializr建立的專案,提供了構建Spring Boot應用程式所需的基本內容

            如你所見,專案裡基本沒有程式碼,除了幾個空目錄外,還包含了如下幾樣東西。
 build.gradle:Gradle構建說明檔案。如果選擇Maven專案,這就會換成pom.xml。
 Application.java :一個帶有 main() 方法的類,用於引導啟動應用程式。
 ApplicationTests.java :一個空的JUnit測試類,它載入了一個使用Spring Boot自動
配置功能的Spring應用程式上下文。
 application.properties:一個空的properties檔案,你可以根據需要新增配置屬性。
在Spring Boot應用程式中,就連空目錄都有自己的意義。static目錄放置的是Web應用程式的
靜態內容(JavaScript、樣式表、圖片,等等)。還有,稍後你將看到,用於呈現模型資料的模板
會放在templates目錄裡。
        你很可能會把Initializr生成的專案匯入IDE。如果你用的IDE是Spring Tool Suite,則可以直接
在IDE裡建立專案。下面來看看Spring Tool Suite是怎麼建立Spring Boot專案的。

2. 在Spring Tool Suite裡建立Spring Boot專案

        長久以來,Spring Tool Suite
① 一直都是開發Spring應用程式的不二之選。從3.4.0版本開始,

它就集成了Spring Initializr,這讓它成為開始上手Spring Boot的好方法。

        要在Spring Tool Suite裡建立新的Spring Boot應用程式,在File選單裡選中New > Spring Starter
Project選單項,隨後Spring Tool Suite會顯示一個與圖1-3相仿的對話方塊。
如你所見,這個對話方塊要求填寫的資訊和Spring Initializr的Web介面裡是一樣的。事實上,
你在這裡提供的資料會被髮送給Spring Initializr,用於建立專案ZIP檔案,這和使用Web表單是

一樣的。



                圖1-3 Spring Tool Suite集成了Spring Initializr,可以在IDE裡建立並直接匯入Spring

                        Boot專案

        如果你想在檔案系統上指定專案建立的位置,或者把它加入IDE裡的特定工作集,就點選Next
按鈕。你會看到第二個對話方塊,如圖1-4所示。
Location指定了檔案系統上專案的存放位置。如果你使用Eclipse的工作集來組織專案,那麼
也可以勾上Add Project to Working Sets這個複選框,選擇一個工作集,這樣就能把專案加入指定
的工作集了。
            Site Info部分簡單描述了將要用來訪問Initializr的URL,大多數情況下你都可以忽略這部分內
容。然而,如果要部署自己的Initializr伺服器(從https://github.com/spring-io/initializr複製程式碼即
可),你可以在這裡設定Initializr基礎URL。
點選Finish按鈕後,專案的生成和匯入過程就開始了。你必須認識到一點,Spring Tool Suite
的Spring Starter Project對話方塊,其實是把專案生成的工作委託給http://start.spring.io上的Spring

Initializr來做的,因此必須聯網才能使用這一功能。


        圖1-4 Spring Starter Project對話方塊的第2頁可以讓你指定在哪裡建立專案

        一旦把專案匯入工作空間,應用程式就可以開發了。在開發的過程中,你會發現Spring Tool
Suite針對Spring Boot還有一些錦上添花的功能。比如,可以在Run選單裡選中Run As > Spring Boot
Application,在嵌入式伺服器裡執行你的應用程式。
注意,Spring Tool Suite是通過REST API與Initializr互動的,因此只有連上Initializr它才能正常
工作。如果你的開發機離線,或者Initializr被防火牆阻斷了,那麼Spring Tool Suite的Spring Starter
Project嚮導是無法使用的。

3. 在IntelliJ IDEA裡建立Spring Boot專案

IntelliJ IDEA是非常流行的IDE,IntelliJ IDEA 14.1已經支援Spring Boot了!

        要在IntelliJ IDEA裡建立新的Spring Boot應用程式,在File選單裡選擇New > Project。你會看
到幾屏內容(圖1-5是第一屏),問的問題和Initializr的Web應用程式以及Spring Tool Suite類似。
在首先顯示的這一屏中,在左側專案選擇裡選中Spring Initializr,隨後會提示你選擇一個
Project SDK(基本上就是這個專案要用的Java SDK),同時選擇Initializr Web服務的位置。除非你

在使用自己的Initializr,否則應該不做任何修改直接點Next按鈕,之後就到了圖1-6。


                        圖1-5 IntelliJ IDEA裡Spring Boot初始化嚮導的第一屏


                                    圖1-6 在IntelliJ IDEA的Spring Boot初始化嚮導裡指定專案資訊

        Spring Boot初始化嚮導的第二屏要求你提供專案的一些基本資訊,比如專案名稱、Maven
Group和Artifact、Java版本,以及你是想用Maven還是Gradle來構建專案。描述好專案資訊之後,

點選Next按鈕就能看到第三屏了,如圖1-7所示。


                        圖1-7 在IntelliJ IDEA的Spring Boot初始化嚮導裡選擇專案依賴

        第二屏向你詢問專案的基本資訊,第三屏就開始問你要往專案裡新增什麼依賴了。和之前一
樣,螢幕裡的複選框和Spring Boot起步依賴是對應的。選完之後點選Next就到了嚮導的最後一屏,
如圖1-8所示。
最後一屏問你專案叫什麼名字,還有要在哪裡建立專案。一切準備就緒之後,點選Finish按

鈕,就能在IDE裡得到一個空的Spring Boot專案了。


                    圖1-8 IntelliJ IDEA的Spring Boot初始化嚮導的最後一屏

4. 在Spring Boot CLI裡使用Initializr

        如前文所述,如果你想僅僅寫程式碼就完成Spring應用程式的開發,那麼Spring Boot CLI是個
不錯的選擇。然而,Spring Boot CLI的功能還不限於此,它有一些命令可以幫你使用Initializr,通
過它上手開發更傳統的Java專案。
        Spring Boot CLI包含了一個 init 命令,可以作為Initializr的客戶端介面。 init 命令最簡單的
用法就是建立Spring Boot專案的基線:
$ spring init
        在和Initializr的Web應用程式通訊後, init 命令會下載一個demo.zip檔案。解壓後你會看到
一個典型的專案結構,包含一個Maven的pom.xml構建描述檔案。Maven的構建說明只包含最基本
的內容,即只有Spring Boot基線和測試起步依賴。你可能會想要更多的東西。
假設你想要構建一個Web應用程式,其中使用JPA實現資料持久化,使用Spring Security進行
安全加固,可以用 --dependencies 或 -d 來指定那些初始依賴:
$ spring init -dweb,jpa,security
        這條命令會下載一個demo.zip檔案,包含與之前一樣的專案結構,但在pom.xml裡增加了
Spring Boot的Web、jpa和security起步依賴。請注意,在 -d 和依賴之間不能加空格,否則就變成
了下載一個ZIP檔案,檔名是web,jpa,security。
現在,假設你想用Gradle來構建專案。沒問題,用 --build 引數將Gradle指定為構建型別:
$ spring init -dweb,jpa,security --build gradle
        預設情況下,無論是Maven還是Gradle的構建說明都會產生一個可執行JAR檔案。但如果你

想要一個WAR檔案,那麼可以通過 --packaging 或者 -p 引數進行說明:

$ spring init -dweb,jpa,security --build gradle -p war
        到目前為止, init 命令只用來下載ZIP檔案。如果你想讓CLI幫你解壓那個ZIP檔案,可以指
定一個用於解壓的目錄:
$ spring init -dweb,jpa,security --build gradle -p war myapp
        此處的最後一個引數說明你希望把專案解壓到myapp目錄裡去。
此外,如果你希望CLI把生成的專案解壓到當前目錄,可以使用 --extract 或者 -x 引數:
$ spring init -dweb,jpa,security --build gradle -p jar -x
        init 命令還有不少其他引數,包括基於Groovy構建專案的引數、指定用Java版本編譯的引數,
還有選擇構建依賴的Spring Boot版本的引數。可以通過 help 命令瞭解所有引數的情況:
$ spring help init
    你也可以檢視那些引數都有哪些可選項,為 init 命令帶上 --list 或 -l 引數就可以了:
$ spring init -l
        你一定注意到了,儘管 spring init –l 列出了一些Initializr支援的引數,但並非所有引數
都能直接為Spring Boot CLI的 init 命令所支援。舉例來說,用CLI初始化專案時,你不能指定根
包的名字,它預設為demo。 spring help init 會告訴你CLI的 init 命令都支援哪些引數。
無論你是用Initializr的Web介面,在Spring Tool Suite裡建立專案,還是用Spring Boot CLI來初
始化專案,Spring Boot Initializr創建出來的專案都有相似的專案佈局,和你之前開發過的Java項
目沒什麼不同。