開發(fā)你的第一個(gè)Spring Boot應(yīng)用程序
林中白狼
發(fā)布于 廣東 2018-03-31 · 1.9w瀏覽 9贊

? ? ? ?我們用Java開發(fā)一個(gè)簡(jiǎn)單的“Hello World!”Web應(yīng)用程序,重點(diǎn)介紹Spring Boot的一些主要特性。我們將使用Maven來(lái)構(gòu)建這個(gè)項(xiàng)目,因?yàn)榇蠖鄶?shù)IDE都支持它。

? ? ? spring.io網(wǎng)站包含許多使用Spring Boot的“入門指南”。如果你想解決一個(gè)特定的問(wèn)題,先在那里查閱。

? ? ? 您可以通過(guò)轉(zhuǎn)到start.spring.io并從依賴關(guān)系搜索器中選擇Web Starter來(lái)快速執(zhí)行以下步驟。這將自動(dòng)生成一個(gè)新的項(xiàng)目結(jié)構(gòu),以便您可以立即開始編碼。檢查文檔以獲取更多詳細(xì)信息。

? ? ? 在Spring Boot的入門說(shuō)明中,我們了解到了JDK和Spring Boot的版本關(guān)系,所以我們?cè)陂_始之前,請(qǐng)打開終端,檢查是否安裝了Java和Maven的有效版本。


? ? ? ??

? ? ? 說(shuō)明:此文檔中的實(shí)例例中POM文件需要在其自己的文件夾中創(chuàng)建。后續(xù)的說(shuō)明假設(shè)你已經(jīng)創(chuàng)建了一個(gè)合適的文件夾,并且它是你的“當(dāng)前目錄”。

1、創(chuàng)建POM

? ? ?我們需要從創(chuàng)建一個(gè)Maven pom.xml文件開始。pom.xml是用來(lái)構(gòu)建項(xiàng)目的配方。 打開你最喜歡的文本編輯器并添加以下內(nèi)容:

? ? xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

? ? 4.0.0


? ? com.example

? ? myproject

? ? 0.0.1-SNAPSHOT


? ?

? ? ? ? org.springframework.boot

? ? ? ? spring-boot-starter-parent

? ? ? ? 1.5.10.RELEASE

? ?


org.springframework.boot

spring-boot-starter-web


? ?



? ? ? ?這應(yīng)該給你一個(gè)工作的構(gòu)建,你可以通過(guò)運(yùn)行mvn包(你可以忽略“jar將是空的 - 沒(méi)有內(nèi)容被標(biāo)記為包含!”警告現(xiàn)在)來(lái)測(cè)試它。

? ? ? ?此時(shí),您可以將項(xiàng)目導(dǎo)入IDE(大多數(shù)現(xiàn)代Java IDE包含對(duì)Maven的內(nèi)置支持)。 為了簡(jiǎn)單起見,我們將繼續(xù)在這個(gè)例子中使用純文本編輯器。


2、添加classpath依賴關(guān)系

? ? ?Spring Boot提供了許多“入門”,可以方便地將jar添加到你的classpath中。我們的示例應(yīng)用程序已經(jīng)在POM的父節(jié)點(diǎn)中使用了spring-boot-starter-parent。spring-boot-starter-parent主要是設(shè)置項(xiàng)目結(jié)構(gòu)的配置參數(shù)。是一個(gè)特別的啟動(dòng)器,提供了有用的Maven默認(rèn)值。它還提供了一個(gè)依賴管理部分,以便您可以省略版本標(biāo)記以獲得“有?!钡囊蕾囮P(guān)系。

? ? ?其他“入門者”只是提供開發(fā)特定類型的應(yīng)用程序時(shí)可能需要的依賴關(guān)系。由于我們正在開發(fā)一個(gè)Web應(yīng)用程序,我們將添加一個(gè)spring-boot-starter-web依賴項(xiàng),但在此之前,我們來(lái)看看我們目前擁有的。

? ? ?我們先看看我們之前設(shè)置的POM是有有依賴關(guān)系。


? ? ??

? ? ? Mvn dependency:tree命令打印項(xiàng)目依賴項(xiàng)的樹形表示。你可以看到spring-boot-starter-parent本身不提供依賴關(guān)系。讓我們編輯我們的pom.xml,并在父節(jié)的下面添加spring-boot-starter-web依賴項(xiàng):

? ? ? 從上圖我們可以知道,我們的那個(gè)POM配置文件并未有任何的依賴,所以我們加入如下的配置代碼片段:

? ? ??

? ?

? ? ? ? org.springframework.boot

? ? ? ? spring-boot-starter-web

? ?


? ? ? 如果再次運(yùn)行mvn dependency:tree,則會(huì)看到現(xiàn)在還有許多附加依賴項(xiàng),包括Tomcat Web服務(wù)器和Spring Boot本身。

? ? ??

? ? ? 這樣你就可以看到Spring Boot的依賴關(guān)系。


3、編寫代碼

? ? ? 為了完成我們的應(yīng)用程序,我們需要?jiǎng)?chuàng)建一個(gè)Java文件。Maven默認(rèn)會(huì)從src / main / java編譯源代碼,所以你需要?jiǎng)?chuàng)建這個(gè)文件夾結(jié)構(gòu),然后添加一個(gè)名為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);

? ? }


}


? ? ?雖然這里沒(méi)有太多的代碼,但還是有很多。我們來(lái)看看重要的部分。


3.1?@RestController和@RequestMapping注解

? ? ? 我們的Example類的第一個(gè)注解是@RestController。這被稱為刻板印記。它為閱讀代碼提供了線索,對(duì)于Spring來(lái)說(shuō),這個(gè)類扮演著特定的角色。在這種情況下,我們的類是一個(gè)web @Controller,所以Spring在處理傳入的Web請(qǐng)求時(shí)會(huì)考慮它。

? ? ? @RequestMapping注釋提供了“路由”信息。它告訴Spring,任何具有路徑“/”的HTTP請(qǐng)求都應(yīng)該映射到home方法。@RestController注釋告訴Spring將結(jié)果字符串直接返回給調(diào)用者。

? ? ? @RestController和@RequestMapping注解是Spring MVC注釋(它們不是Spring Boot特有的)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱Spring參考資料中的MVC部分。


3.2?@EnableAutoConfiguration注釋

? ? ? 第二個(gè)類級(jí)注釋是@EnableAutoConfiguration。這個(gè)注解告訴Spring Boot根據(jù)你添加的jar依賴來(lái)“猜測(cè)”你將如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以自動(dòng)配置會(huì)假定你正在開發(fā)一個(gè)Web應(yīng)用程序并相應(yīng)地設(shè)置Spring。


3.3 main方法

? ? ? 我們的應(yīng)用程序的最后一部分是主要的方法。這只是一個(gè)遵循Java約定的應(yīng)用程序入口點(diǎn)的標(biāo)準(zhǔn)方法。我們的主要方法通過(guò)調(diào)用run來(lái)委托Spring Boot的SpringApplication類SpringApplication的args主要是通過(guò)java命令啟動(dòng)的時(shí)候,可以識(shí)別到具體的參數(shù)配置。SpringApplication將引導(dǎo)我們的應(yīng)用程序,從Spring開始,它將啟動(dòng)自動(dòng)配置的Tomcat Web服務(wù)器。我們需要將Example.class作為參數(shù)傳遞給run方法,以告知SpringApplication是Spring的主要組件。args數(shù)組也被傳遞以暴露任何命令行參數(shù)。


4、運(yùn)行示例

? ? ?在這一點(diǎn)上我們的應(yīng)用程序應(yīng)該工作由于我們使用了spring-boot-starter-parent POM,所以我們有一個(gè)有用的運(yùn)行目標(biāo),我們可以使用它來(lái)啟動(dòng)應(yīng)用程序。鍵入mvn spring-boot:從根項(xiàng)目目錄運(yùn)行以啟動(dòng)應(yīng)用程序。具體實(shí)例如下:

? ? ?


? ? ??如果你打開一個(gè)web瀏覽器到localhost:8080,你應(yīng)該看到如下輸出:

? ??

? ? ??要正常退出應(yīng)用程序點(diǎn)擊ctrl-c。


5、創(chuàng)建一個(gè)可執(zhí)行的jar

? ? ? 讓我們通過(guò)創(chuàng)建一個(gè)完全獨(dú)立的可執(zhí)行jar文件來(lái)完成我們的例子,我們可以在生產(chǎn)環(huán)境中運(yùn)行它??蓤?zhí)行jar(有時(shí)也稱為“fat jars”)是包含您編譯的類以及您的代碼需要運(yùn)行的所有jar依賴項(xiàng)的歸檔文件。

? ? ??要?jiǎng)?chuàng)建一個(gè)可執(zhí)行的jar文件,我們需要將spring-boot-maven-plugin添加到我們的pom.xml中。在依賴關(guān)系部分下面插入以下幾行:

? ? ??

? ?

? ? ? ?

? ? ? ? ? ? org.springframework.boot

? ? ? ? ? ? spring-boot-maven-plugin

? ? ? ?

? ?


? ? ? ?spring-boot-starter-parent POM包含配置來(lái)綁定重新打包目標(biāo)。如果您不使用父POM,則需要自行聲明此配置。有關(guān)詳細(xì)信息,請(qǐng)參閱插件文檔。

保存你的pom.xml并從命令行運(yùn)行mvn包:


? ? ??

? ? ? 如果您查看目標(biāo)目錄,則應(yīng)該看到myproject-0.0.1-SNAPSHOT.jar。該文件大小應(yīng)該在10 MB左右。如果你想偷看里面,你可以使用jar tvf:

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

? ? ? 您還應(yīng)該在目標(biāo)目錄中看到一個(gè)名為myproject-0.0.1-SNAPSHOT.jar.original的小得多的文件。這是Maven在被Spring Boot重新包裝之前創(chuàng)建的原始jar文件。

要運(yùn)行該應(yīng)用程序,請(qǐng)使用java -jar命令:

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

林中白狼
瀏覽 1.9w
9
相關(guān)推薦
最新評(píng)論
贊過(guò)的人 9
評(píng)論加載中...

暫無(wú)評(píng)論,快來(lái)評(píng)論吧!