SpringBoot:1.開啟SpringBoot之旅

什么是 Spring Boot

[圖片上傳失敗...(image-4ae529-1571911785229)]
Spring Boot是Spring團(tuán)隊設(shè)計用來簡化Spring應(yīng)用的搭建和開發(fā)過程的框架。該框架對第三方庫進(jìn)行了簡單的默認(rèn)配置,通過Spring Boot構(gòu)建的應(yīng)用程序只需很少的Spring配置即可快速的運(yùn)行起來娩怎。

使用 Spring Boot 好處

簡單、快速乒躺、便捷。

搭建普通Spring Web項目項目的一般流程:

  1. 配置web.xml,整合Spring和SpringMvc
  2. 整合Spring和Mybatis,配置Spring事務(wù)
  3. 配置日志文件
  4. 部署Tomcat調(diào)試

.......

一系列的配置過程繁雜望门,很容易遺漏掉,即便是隨便搭建一個簡單的爬取某個頁面的郵箱存入數(shù)據(jù)庫的小項目锰霜,都要從頭到尾的將配置流程走一遍。

如果使用Spring Boot桐早,配置則簡化了很多癣缅,只需要引入響應(yīng)的幾個maven依賴,進(jìn)行簡單的幾個配置就可以快速方便的搭建一個Web項目哄酝。

開啟Spring Boot之旅

線上構(gòu)建

  1. 訪問http://start.spring.io
  2. 選擇Maven Project友存、Java、Spring Boot 2.1.9構(gòu)建陶衅,點擊Generate生成對應(yīng)的文件屡立。項目信息簡單配置。
    在這里插入圖片描述

    備注:

Dependencies處可通過添加相應(yīng)的依賴搀军,在生成項目文件時就會自動添加膨俐,比如,如果我們要做Web開發(fā)罩句,只要在依賴?yán)锾砑覹eb即可焚刺。

  1. MyEclipse,Import -> Existing Maven Projects -> Next -> 選擇解壓后的文件夾 -> Finsh!


    在這里插入圖片描述

通過Myeclipse構(gòu)建項目

  1. File -> New -> Spring Starter Project新建項目

  2. 配置項目相關(guān)基本信息


    在這里插入圖片描述
  3. 選擇依賴门烂,比如Spring Web
    [圖片上傳失敗...(image-2204af-1571911785229)]

  4. Finish OK乳愉,Spring Boot項目構(gòu)建完成兄淫。

Tips:

導(dǎo)入或者M(jìn)yeclipse構(gòu)建項目有可能會出現(xiàn)pom.xml文件首行出現(xiàn)錯誤:Unknown pom.xml /demo line 1 Maven Configuration Problem。

解決方案

在pom文件中的<properties>節(jié)點中加入<maven-jar-plugin.version>3.0.0</maven-jar-plugin.version>然后右鍵項目進(jìn)入Maven>Update Project...菜單點擊蔓姚,即可

項目結(jié)構(gòu)解析

在這里插入圖片描述

Spring Boot 的基礎(chǔ)結(jié)構(gòu)共三個文件:

  • src/main/java 程序開發(fā)以及主程序入口:Application
  • src/main/resources 配置文件存放位置:application.properties
  • src/test/java 測試入口:ApplicationTests
  1. 在Application 右鍵run啟動Spring Boot項目

生成的ApplicationApplicationTests類都可以直接運(yùn)行來啟動當(dāng)前創(chuàng)建的項目捕虽,由于目前該項目未配合任何數(shù)據(jù)訪問或Web模塊,程序會在加載完Spring之后結(jié)束運(yùn)行坡脐。

Web開發(fā)

默認(rèn)Tomcat啟動項目

spring-boot-starter-parent指定了當(dāng)前項目為一個Spring Boot項目泄私,它提供了諸多的默認(rèn)Maven依賴。

Spring Boot提供了許多開箱即用的依賴模塊挨措,這些模塊都是以spring-boot-starter-XX命名的挖滤。比如要開啟Spring Boot的web功能,只需要在pom.xml中配置spring-boot-starter-web即可:

  1. pom.xml中添加支持web的模塊
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

因為其依賴于spring-boot-starter-parent浅役,所以這里可以不用配置version斩松。

pom.xml 文件中默認(rèn)有兩個模塊:

  • spring-boot-starter :核心模塊,包括自動配置支持觉既、日志和 YAML惧盹,如果引入了 spring-boot-starter-web web 模塊可以去掉此配置,因為 spring-boot-starter-web 自動依賴了 spring-boot-starter瞪讼。
  • spring-boot-starter-test :測試模塊钧椰,包括 JUnit、Hamcrest符欠、Mockito嫡霞。
  1. 編寫Controller層
package com.w3cjava.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
    @RequestMapping("/hello")
    public String index() {
        return "Hello World";
    }
}

@RestController 相當(dāng)于Spring中的@Controller和@ResponseBody組合使用的,直接以 json 格式輸出希柿。

  1. 啟動主程序诊沪,打開瀏覽器訪問http://localhost:8080/hello 結(jié)果界面如下,你已經(jīng)可以愉快的開發(fā)Web項目了曾撤。
    [圖片上傳失敗...(image-95a265-1571911785229)]

配置Jetty啟動項目

  1. 在pom.xml文件中找到spring-boot-starter-web端姚,在其依賴中排除tomcat依賴
<!-- 支持web的模塊依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 排除tomcat依賴 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  1. 添加jetty依賴
<!-- jetty依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
  1. 啟動項目主程序,可見tomcat已經(jīng)替換為jetty了挤悉。


    在這里插入圖片描述
  2. 訪問 http://localhost:8080/hello 頁面結(jié)果顯示正常渐裸。

單元測試

模擬對 http://localhost:8080/hello 發(fā)送請求測試

package com.w3cjava;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import com.w3cjava.controller.HelloWorldController;

@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {

    private MockMvc mvc;

    @Before
    public void setUp() throws Exception {
        mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
    }

    @Test
    public void getHello() throws Exception {
     mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("Hello World")));
    }
}

熱部署

  1. 添加spring-boot-devtools依賴
<!-- 熱部署依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
  1. 啟動主程序
  2. 在HelloWorldController中添加新的映射方法
@RequestMapping("/hello1")
public String index1() {
    return "Hello World1";
}   
  1. 直接訪問 http://localhost:8080/hello1 正常
    在這里插入圖片描述

spring-boot-maven-plugin插件

spring-boot-maven-plugin:能夠以Maven的方式為應(yīng)用提供Spring Boot的支持,即為Spring Boot應(yīng)用提供了執(zhí)行Maven操作的可能装悲。

Spring Boot Maven plugin的5個Goals

  • spring-boot:repackage昏鹃,默認(rèn)goal。在mvn package之后诀诊,再次打包可執(zhí)行的jar/war盆顾,同時保留mvn package生成的jar/war為.origin
  • spring-boot:run,運(yùn)行Spring Boot應(yīng)用
  • spring-boot:start畏梆,在mvn integration-test階段您宪,進(jìn)行Spring Boot應(yīng)用生命周期的管理
  • spring-boot:stop奈懒,在mvn integration-test階段,進(jìn)行Spring Boot應(yīng)用生命周期的管理
  • spring-boot:build-info宪巨,生成Actuator使用的構(gòu)建信息文件build-info.properties

小結(jié)

總體上而言磷杏,通過Spring Boot可以快速構(gòu)建項目,如果需要使用某個特定的功能捏卓,只要添加對應(yīng)的依賴及簡單配置項即可极祸。

源碼:01.Spring-Boot-Demo

歡迎掃面下列二維碼關(guān)注“余弦的自留地”公眾微信號

在這里插入圖片描述

萬物之中,希望至美

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怠晴,一起剝皮案震驚了整個濱河市遥金,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒜田,老刑警劉巖稿械,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冲粤,居然都是意外死亡美莫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門梯捕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厢呵,“玉大人,你說我怎么就攤上這事傀顾〗竺” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵短曾,是天一觀的道長蝌矛。 經(jīng)常有香客問我,道長错英,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任隆豹,我火速辦了婚禮椭岩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘璃赡。我一直安慰自己判哥,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布碉考。 她就那樣靜靜地躺著塌计,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侯谁。 梳的紋絲不亂的頭發(fā)上锌仅,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天章钾,我揣著相機(jī)與錄音,去河邊找鬼热芹。 笑死贱傀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伊脓。 我是一名探鬼主播府寒,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼报腔!你這毒婦竟也來了株搔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤纯蛾,失蹤者是張志新(化名)和其女友劉穎纤房,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茅撞,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帆卓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了米丘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剑令。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拄查,靈堂內(nèi)的尸體忽然破棺而出吁津,到底是詐尸還是另有隱情,我是刑警寧澤堕扶,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布碍脏,位于F島的核電站,受9級特大地震影響稍算,放射性物質(zhì)發(fā)生泄漏典尾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一糊探、第九天 我趴在偏房一處隱蔽的房頂上張望钾埂。 院中可真熱鬧,春花似錦科平、人聲如沸褥紫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽髓考。三九已至,卻和暖如春弃酌,著一層夾襖步出監(jiān)牢的瞬間氨菇,已是汗流浹背儡炼。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留门驾,地道東北人射赛。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像奶是,于是被迫代替她去往敵國和親楣责。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361