什么是 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項目項目的一般流程:
- 配置web.xml,整合Spring和SpringMvc
- 整合Spring和Mybatis,配置Spring事務(wù)
- 配置日志文件
- 部署Tomcat調(diào)試
.......
一系列的配置過程繁雜望门,很容易遺漏掉,即便是隨便搭建一個簡單的爬取某個頁面的郵箱存入數(shù)據(jù)庫的小項目锰霜,都要從頭到尾的將配置流程走一遍。
如果使用Spring Boot桐早,配置則簡化了很多癣缅,只需要引入響應(yīng)的幾個maven依賴,進(jìn)行簡單的幾個配置就可以快速方便的搭建一個Web項目哄酝。
開啟Spring Boot之旅
線上構(gòu)建
- 訪問http://start.spring.io
- 選擇Maven Project友存、Java、Spring Boot 2.1.9構(gòu)建陶衅,點擊Generate生成對應(yīng)的文件屡立。項目信息簡單配置。
在這里插入圖片描述
備注:
Dependencies處可通過添加相應(yīng)的依賴搀军,在生成項目文件時就會自動添加膨俐,比如,如果我們要做Web開發(fā)罩句,只要在依賴?yán)锾砑覹eb即可焚刺。
-
MyEclipse,Import -> Existing Maven Projects -> Next -> 選擇解壓后的文件夾 -> Finsh!
在這里插入圖片描述
通過Myeclipse構(gòu)建項目
File -> New -> Spring Starter Project新建項目
-
配置項目相關(guān)基本信息
在這里插入圖片描述 選擇依賴门烂,比如Spring Web
[圖片上傳失敗...(image-2204af-1571911785229)]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
- 在Application 右鍵run啟動Spring Boot項目
生成的Application
和ApplicationTests
類都可以直接運(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即可:
- 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嫡霞。
- 編寫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 格式輸出希柿。
- 啟動主程序诊沪,打開瀏覽器訪問http://localhost:8080/hello 結(jié)果界面如下,你已經(jīng)可以愉快的開發(fā)Web項目了曾撤。
[圖片上傳失敗...(image-95a265-1571911785229)]
配置Jetty啟動項目
- 在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>
- 添加jetty依賴
<!-- jetty依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
-
啟動項目主程序,可見tomcat已經(jīng)替換為jetty了挤悉。
在這里插入圖片描述 - 訪問 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")));
}
}
熱部署
- 添加spring-boot-devtools依賴
<!-- 熱部署依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
- 啟動主程序
- 在HelloWorldController中添加新的映射方法
@RequestMapping("/hello1")
public String index1() {
return "Hello World1";
}
- 直接訪問 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)的依賴及簡單配置項即可极祸。
歡迎掃面下列二維碼關(guān)注“余弦的自留地”公眾微信號
萬物之中,希望至美