摘要:開發(fā)你的第一個(gè)應(yīng)用程序本節(jié)描述如何開發(fā)一個(gè)簡(jiǎn)單的應(yīng)用程序來突出了的一些關(guān)鍵特性,我們使用來構(gòu)建這個(gè)項(xiàng)目,因?yàn)榇蠖鄶?shù)都支持它。如果你希望分發(fā)一個(gè)自包含的應(yīng)用程序,這可能會(huì)有問題。
11. 開發(fā)你的第一個(gè)Spring Boot應(yīng)用程序
本節(jié)描述如何開發(fā)一個(gè)簡(jiǎn)單的“Hello World!” web應(yīng)用程序來突出了Spring Boot的一些關(guān)鍵特性,我們使用Maven來構(gòu)建這個(gè)項(xiàng)目,因?yàn)榇蠖鄶?shù)IDE都支持它。
spring.io網(wǎng)站包含許多使用Spring Boot的“入門”指南,如果你需要解決一個(gè)具體的問題,先檢查一下。
你可以通過使用start.spring.io和從依賴關(guān)系搜索器中選擇“Web”啟動(dòng)器來快捷地完成以下步驟,這樣做會(huì)生成一個(gè)新的項(xiàng)目結(jié)構(gòu),這樣你就可以立即開始編寫代碼,查看Spring Initializr文檔了解更多細(xì)節(jié)。
在開始之前,打開一個(gè)終端并運(yùn)行以下命令,以確保安裝了有效的Java和Maven版本:
$ java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Maven home: /usr/local/Cellar/maven/3.3.9/libexec Java version: 1.8.0_102, vendor: Oracle Corporation
此示例需要在其自己的文件夾中創(chuàng)建,隨后的指令假設(shè)你已經(jīng)創(chuàng)建了一個(gè)合適的文件夾,并且它是你當(dāng)前的目錄。11.1 創(chuàng)建POM
我們需要先創(chuàng)建一個(gè)Maven pom.xml文件,pom.xml是用于構(gòu)建項(xiàng)目的,打開你最喜歡的文本編輯器并添加以下內(nèi)容:
4.0.0 com.example myproject 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.0.5.RELEASE
前面的清單應(yīng)該給你一個(gè)工作構(gòu)建,你可以通過運(yùn)行mvn package來測(cè)試它(現(xiàn)在,你可以忽略“jar will be empty - no content was marked for inclusion!”的警告)。
此時(shí),你可以將項(xiàng)目導(dǎo)入到IDE中(大多數(shù)現(xiàn)代Java IDE都包含對(duì)Maven的內(nèi)置支持),為了簡(jiǎn)單起見,我們繼續(xù)使用這個(gè)示例的純文本編輯器。11.2 添加類路徑依賴
Spring Boot提供了一些“Starters”,可以讓你將jar添加到類路徑中,我們的示例應(yīng)用程序已經(jīng)在POM的父部分使用了spring-boot-starter-parent,spring-boot-starter-parent是一個(gè)特殊的starter,它提供有用的Maven默認(rèn)值,它還提供了一個(gè)dependency-management部分,以便你可以“幸?!钡氖÷砸蕾図?xiàng)的version標(biāo)記。
其他“Starters”提供了在開發(fā)特定類型的應(yīng)用程序時(shí)可能需要的依賴項(xiàng),由于我們正在開發(fā)一個(gè)web應(yīng)用程序,所以我們添加了一個(gè)spring-boot-starter-web依賴項(xiàng)。在此之前,我們可以通過運(yùn)行以下命令查看當(dāng)前所擁有的內(nèi)容:
$ mvn dependency:tree [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
mvn dependency:tree命令以樹的形式打印項(xiàng)目依賴項(xiàng),你可以看到spring-boot-starter-parent本身不提供依賴性,要添加必要的依賴項(xiàng),請(qǐng)編輯pom.xml并將spring-boot-starter-web依賴項(xiàng)立即添加到parent部分下面:
org.springframework.boot spring-boot-starter-web
如果你再次運(yùn)行mvn dependency:tree,你會(huì)看到現(xiàn)在有許多額外的依賴項(xiàng),包括Tomcat web服務(wù)器和Spring Boot本身。
11.3 編寫代碼要完成我們的應(yīng)用程序,我們需要?jiǎng)?chuàng)建一個(gè)Java文件,默認(rèn)情況下,Maven從src/main/java編譯源代碼,因此你需要?jiǎng)?chuàng)建該文件夾結(jié)構(gòu),然后添加一個(gè)名為src/main/java/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); } }
雖然這里沒有多少代碼,但仍有很多工作要做,我們將在接下來的幾節(jié)中討論重要的部分。
11.3.1 @RestController和@RequestMapping注解在我們的Example類上的第一個(gè)注解是@RestController,這被稱為構(gòu)造型注解,它為閱讀代碼的人們提供了一些提示,并且為Spring提供了一個(gè)特定的角色。在本例中,我們的類是一個(gè)web @Controller,所以Spring在處理傳入web請(qǐng)求時(shí)考慮它。
@RequestMapping注解提供了“路由”信息,它告訴Spring,任何帶有/路徑的HTTP請(qǐng)求都應(yīng)該映射到home方法,@RestController注解告訴Spring將生成的字符串直接呈現(xiàn)給調(diào)用者。
@RestController和@RequestMapping注解是Spring MVC注解,(它們不是特定于Spring Boot的)有關(guān)更多詳細(xì)信息,請(qǐng)參見Spring參考文檔中的MVC部分。11.3.2 @EnableAutoConfiguration注解
第二個(gè)類級(jí)別注解是@EnableAutoConfiguration,這個(gè)注解告訴Spring Boot基于你添加的jar依賴項(xiàng)“猜測(cè)”你想如何配置Spring,因?yàn)?b>Spring-boot-starter-web添加了Tomcat和Spring MVC,所以自動(dòng)配置假設(shè)你正在開發(fā)一個(gè)web應(yīng)用程序,并相應(yīng)地設(shè)置Spring。
Starters和自動(dòng)配置11.3.3 “Main”方法自動(dòng)配置被設(shè)計(jì)成與“Starters”很好地工作,但是這兩個(gè)概念并沒有直接關(guān)聯(lián)。你可以自由地挑選和選擇除starters之外的jar依賴項(xiàng),Spring Boot仍然盡力自動(dòng)配置你的應(yīng)用程序。
我們的應(yīng)用程序的最后一部分是main方法,這只是遵循應(yīng)用程序入口點(diǎn)的Java約定的標(biāo)準(zhǔn)方法。我們的main方法通過調(diào)用run委托給Spring Boot的SpringApplication類,SpringApplication引導(dǎo)我們的應(yīng)用程序啟動(dòng)Spring,而Spring又啟動(dòng)了自動(dòng)配置的Tomcat web服務(wù)器。我們需要通過Example.class作為run方法的參數(shù),以告訴SpringApplication它是主Spring組件,args數(shù)組也被傳遞,以公開任何命令行參數(shù)。
11.4 運(yùn)行樣例此時(shí),你的應(yīng)用程序應(yīng)該可以工作了,因?yàn)槟闶褂昧?b>spring-boot-starter-parentPOM,所以你有一個(gè)有用的run目標(biāo),你可以使用它來啟動(dòng)應(yīng)用程序。類型mvn spring-boot:run從根項(xiàng)目目錄運(yùn)行,以啟動(dòng)應(yīng)用程序,你應(yīng)該會(huì)看到類似如下的輸出:
$ mvn spring-boot:run . ____ _ __ _ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) ) " |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.5.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.222 seconds (JVM running for 6.514)
如果你打開一個(gè)web瀏覽器到localhost:8080,你應(yīng)該會(huì)看到以下輸出:
Hello World!
要優(yōu)雅地退出應(yīng)用程序,按ctrl-c。
11.5 創(chuàng)建一個(gè)可執(zhí)行jar我們通過創(chuàng)建一個(gè)可以在生產(chǎn)中運(yùn)行的完全自包含的可執(zhí)行jar文件來完成我們的示例,可執(zhí)行jar(有時(shí)稱為“fat jars”)是包含你的編譯類的存檔文件,以及你的代碼需要運(yùn)行的所有jar依賴項(xiàng)。
可執(zhí)行jar和JavaJava沒有提供加載嵌套jar文件的標(biāo)準(zhǔn)方法(jar文件本身包含在一個(gè)jar中)。
如果你希望分發(fā)一個(gè)自包含的應(yīng)用程序,這可能會(huì)有問題。為了解決這個(gè)問題,許多開發(fā)人員使用“uber”jar,一個(gè)uber jar將所有應(yīng)用程序依賴項(xiàng)的所有類打包成一個(gè)歸檔文件,這種方法的問題在于,很難看到應(yīng)用程序中有哪些庫,如果在多個(gè)jar中使用相同的文件名(但使用不同的內(nèi)容),也會(huì)有問題。
Spring Boot采用了一種不同的方法,讓你可以直接嵌套jar。
要?jiǎng)?chuàng)建一個(gè)可執(zhí)行jar,我們需要將spring-boot-maven-plugin添加到我們的pom.xml中,要做到這一點(diǎn),請(qǐng)?jiān)?b>dependencies部分下面插入以下幾行:
org.springframework.boot spring-boot-maven-plugin
spring-boot-starter-parentPOM包括配置以綁定repackage目標(biāo),如果你不使用父POM,你需要自己聲明這個(gè)配置,有關(guān)詳細(xì)信息,請(qǐng)參見插件文檔。
保存你的pom.xml并從命令行運(yùn)行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.0.5.RELEASE:repackage (default) @ myproject --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
如果查看target目錄,應(yīng)該會(huì)看到myproject-0.0.1-snapshot.jar,文件的大小應(yīng)該在10MB左右,如果你想查看內(nèi)部,可以使用jar tvf,如下所示:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
你還應(yīng)該看到一個(gè)更小的文件,名為myproject-0.0.1-snapshot.jar.original在target目錄中,這是Maven在Spring Boot重新打包之前創(chuàng)建的原始jar文件。
要運(yùn)行該應(yīng)用程序,請(qǐng)使用java -jar命令,如下所示:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) ) " |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.5.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864)
如前所述,退出應(yīng)用程序,按ctrl-c。
12.下一步要讀什么希望這一節(jié)提供了一些Spring Boot基礎(chǔ)知識(shí),并幫助你編寫自己的應(yīng)用程序。如果你是面向任務(wù)的開發(fā)人員,你可能想跳到spring.io和查看一些入門指南來解決具體的“我如何用Spring實(shí)現(xiàn)它?”的問題,我們還有Spring boot特有的“How-to”參考文檔。
Spring Boot repository也有一些你可以運(yùn)行的示例,這些示例與代碼的其余部分無關(guān)(也就是說,你不需要構(gòu)建其余的代碼來運(yùn)行或使用示例)。
上一篇:安裝 Spring Boot 下一篇:構(gòu)建系統(tǒng)文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69613.html
摘要:參考指南使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的生產(chǎn)級(jí)的基于的應(yīng)用程序,我們對(duì)平臺(tái)和第三方庫有自己的看法,這樣你就可以以最低限度工作開始了,大多數(shù)應(yīng)用程序都需要很少的配置。文檔本節(jié)簡(jiǎn)要概述了參考文檔,它充當(dāng)文檔其余部分的映射。 Spring Boot 參考指南 Spring Boot使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的、生產(chǎn)級(jí)的基于Spring的應(yīng)用程序,我們對(duì)Spring平臺(tái)和第三方庫有自己的看...
摘要:關(guān)于文檔參考指南可用如下方式最新的副本可以在中找到。嘗試操作文檔,它們?yōu)樽畛R姷膯栴}提供解決方案。學(xué)習(xí)基礎(chǔ),構(gòu)建在許多其他項(xiàng)目上,網(wǎng)站提供豐富的參考文檔,如果你要從開始,嘗試其中一個(gè)指南。我們對(duì)進(jìn)行監(jiān)視,以解決帶有標(biāo)記的問題。 1. 關(guān)于文檔 Spring Boot 參考指南可用如下方式: HTML PDF EPUB 最新的副本可以在 docs.spring.io/spring-b...
摘要:安裝可以與經(jīng)典開發(fā)工具一起使用,也可以作為命令行工具安裝。下面的示例展示了一個(gè)典型的文件安裝命令行接口是一個(gè)命令行工具,你可以使用它來快速地實(shí)現(xiàn)的原型。 10. 安裝Spring Boot Spring Boot可以與經(jīng)典Java開發(fā)工具一起使用,也可以作為命令行工具安裝。無論哪種方式,都需要Java SDK v1.8或更高版本。在開始之前,你應(yīng)該使用以下命令檢查當(dāng)前的Java安裝: ...
摘要:構(gòu)建系統(tǒng)強(qiáng)烈建議你選擇一個(gè)支持依賴管理的構(gòu)建系統(tǒng),并且可以使用發(fā)布到中心存儲(chǔ)庫的工件。例如,要升級(jí)到另一個(gè),你可以將以下元素添加到你的在前面的示例中,我們指定了一個(gè),但是任何依賴類型都可以以相同的方式被覆蓋。 13. 構(gòu)建系統(tǒng) 強(qiáng)烈建議你選擇一個(gè)支持依賴管理的構(gòu)建系統(tǒng),并且可以使用發(fā)布到Maven中心存儲(chǔ)庫的工件。我們建議你選擇Maven或Gradle,可以讓Spring Boot與其...
摘要:從運(yùn)行你可以從運(yùn)行應(yīng)用程序作為簡(jiǎn)單的應(yīng)用程序,但是,你首先需要導(dǎo)入你的項(xiàng)目,導(dǎo)入步驟取決于你的和構(gòu)建系統(tǒng)。如果你不小心運(yùn)行了兩次應(yīng)用程序,你你會(huì)看到一個(gè)錯(cuò)誤,用戶可以使用按鈕而不是按鈕來確保任何現(xiàn)有實(shí)例都已關(guān)閉。 19. 運(yùn)行你的應(yīng)用程序 將你的應(yīng)用程序打包為jar并使用嵌入式HTTP服務(wù)器的最大優(yōu)點(diǎn)之一是,你可以像對(duì)待其他應(yīng)用程序一樣運(yùn)行應(yīng)用程序,調(diào)試Spring Boot應(yīng)用程序也...
閱讀 925·2021-11-25 09:43
閱讀 1299·2021-11-17 09:33
閱讀 3018·2019-08-30 15:44
閱讀 3315·2019-08-29 17:16
閱讀 485·2019-08-28 18:20
閱讀 1643·2019-08-26 13:54
閱讀 557·2019-08-26 12:14
閱讀 2177·2019-08-26 12:14