創(chuàng)建你的第一個應用

11.1 創(chuàng)建POM

我們需要通過創(chuàng)建一個Maven的pom.xml文件開始袁翁。它是一個用來構(gòu)建項目的秘方竖席。打開你喜歡的編輯器,并添加如下內(nèi)容:

 <?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>2.0.1.RELEASE</version>
    </parent>
    <!-- Additional lines to be added here... -->
</project>

上述的列表能夠讓你有一個可行的構(gòu)建。你可以通過運行mvn package(目前炫刷,你可以無視“jar will be empty - no content was marked for inclusion!”的警告)

在這節(jié),你可以導入項目到IDE中(大部分現(xiàn)代的Java IDE都內(nèi)置了對Maven的支持)

11.2 添加依賴

Spring Boot提供了一系列的Starters使你能添加jar包到classpath中郁妈。我們的應用已經(jīng)在POM中的parent節(jié)點使用了spring-boot-starter-parent浑玛。它是一個特殊的starter,能夠提供有用的Maven默認值。它同時也提供依賴管理噩咪,你就可以省略依賴的versions標簽顾彰。

其他的Starters提供你在開發(fā)特殊種類應用所需的依賴。因為我們開發(fā)的是一個網(wǎng)頁應用胃碾,所以添加了spring-boot-starter-web這個依賴涨享。在此之前,我們可以通過運行以下的命令來查看目前的項目依賴

$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

命令mvn dependency:tree打印了一個樹形的項目依賴仆百。你可以看到spring-boot-web-starter它自身并不提供依賴厕隧。為了添加所需的依賴,編輯你的pom.xml并立即在parent節(jié)下面添加以下的依賴spring-boot-starter-web

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

如果你再次運行mvn dependency:tree的話俄周,你可以看到一系列額外的依賴吁讨,包括Tomcat web服務(wù)器和Spring Boot

11.3 編寫代碼

為了完成我們的程序,我們需要創(chuàng)建一個Java文件峦朗。Maven默認從src/main/java中編譯資源建丧,所以你需要創(chuàng)建那樣的文件目錄結(jié)構(gòu)然后添加一個名為src/main/java/Example.java的文件并包含以下代碼:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotion.*;

@RestController
@EnableAutoConfiguration
public class Example{
          @RequestMapping("/")
          String home(){
                     return "Hello World";
          }

          public static void main(String[] args) throws Exception{
                        SpringApplication.run(Example.class,args)
            }
}

雖然這里沒有很多的代碼,但卻發(fā)生很多我們看不到的事情波势,我們在不知不覺中經(jīng)歷了下一些節(jié)章節(jié)中重要的部分翎朱。

11.3.1 @RestController和@RequestMapping 注解

在我們的Example類中第一個注解就是@RestController.我們都知道它是一個固定的注解。它為閱讀代碼的人提供了暗示尺铣,對Spring來說這個類扮演了重要的角色闭翩。在這個例子中,我們的類是一個web @Controller ,所以在處理發(fā)起的web請求時迄埃,Spring就解析它們疗韵。

@ReqeustMapping注解提供了路由信息。它告訴Spring任何/路徑的HTTP請求都應該被映射到home方法中侄非。@RestController注解則告知Spring將字符串結(jié)果直接返回給請求者蕉汪。

@RestController和@RequestMapping注解都是Spring MVC注解(它們并不是Spring Boot特有的)流译。詳細信息請閱讀MVC section中的Spring參考文檔。

11.3.2 @EnableAutoConfiguration注解

第二個類級的注解就是@EnableAutoConfiguration者疤。這個注解告知Spring Boot去“猜測”你想怎樣配置Spring福澡,基于你添加的jar依賴。由于spring-boot-starter-web添加了Tomcat和Spring MVC驹马,自動配置則根據(jù)它假設(shè)你正在開發(fā)一個web程序

Starters和Auto-Configuration
自動配置是設(shè)計來搭配Starters更好工作的革砸,但這兩個概念并不是直接捆綁在一起的。你可以隨心選擇starters以外的jar依賴糯累。Spring Boot照樣能很好地自動配置你的應用算利。

11.3.3 main方法

關(guān)于我們應用的最后一部分是main方法,這就是應用入口的一個標準方法泳姐,它遵循Java的慣例效拭。我們通過調(diào)用run將main方法委托給了SpringApplication類。SpringApplication啟動我們的應用胖秒,開啟Spring缎患,相應地啟動自動配置好的Tomcat web服務(wù)器。我們需要將Example.class作為一個參數(shù)傳給run方法以告知SpringApplication哪個是基本的Spirng組件阎肝。通過args數(shù)組暴露任何的命令行參數(shù)挤渔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市风题,隨后出現(xiàn)的幾起案子蚂蕴,更是在濱河造成了極大的恐慌,老刑警劉巖俯邓,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骡楼,死亡現(xiàn)場離奇詭異,居然都是意外死亡稽鞭,警方通過查閱死者的電腦和手機鸟整,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朦蕴,“玉大人篮条,你說我怎么就攤上這事》宰ィ” “怎么了涉茧?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疹娶。 經(jīng)常有香客問我伴栓,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任钳垮,我火速辦了婚禮惑淳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饺窿。我一直安慰自己歧焦,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布肚医。 她就那樣靜靜地躺著绢馍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肠套。 梳的紋絲不亂的頭發(fā)上舰涌,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音糠排,去河邊找鬼舵稠。 笑死超升,一個胖子當著我的面吹牛入宦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播室琢,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼乾闰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盈滴?” 一聲冷哼從身側(cè)響起涯肩,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巢钓,沒想到半個月后病苗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡症汹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年硫朦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片背镇。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡咬展,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞒斩,到底是詐尸還是另有隱情破婆,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布胸囱,位于F島的核電站祷舀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蔑鹦,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一夺克、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嚎朽,春花似錦铺纽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锅很,卻和暖如春其馏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背爆安。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工叛复, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扔仓。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓褐奥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親翘簇。 傳聞我的和親對象是個殘疾皇子撬码,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容