序言:SpringBoot 是在Spring基礎(chǔ)上實(shí)現(xiàn)了自動(dòng)配置的基礎(chǔ)框架,快速幫助Spring整合各種第三方框架,讓項(xiàng)目配置化繁為簡(jiǎn),大幅提高開發(fā)效率。
一、SpringBoot 五大特性
1.座靠Spring (顛覆傳統(tǒng))
2.內(nèi)嵌Tomcat(無需外部署)
3.提供各種Starter (開箱即用 +簡(jiǎn)化依賴 )
4.提供自動(dòng)配置 ( 媽媽再也不用擔(dān)我寫錯(cuò)配置了)
-
5.告別XML?。▽?shí)現(xiàn)約定大于配置 )
高級(jí)傳送門:SpringBoot 官方參考指南
二、SpringBoot 快速入門
1.搭建開發(fā)環(huán)境
JDK版本:Oracle JDK 1.8+
構(gòu)建工具:Apache Maven 3.3.0+ (bin.zip)
開發(fā)工具:IntelliJ IDEA 2017.2.6 / Eclipse 4.2+
2.創(chuàng)建第一個(gè)工程
使用官方推薦的 Spring Initializr 工具來構(gòu)建第一個(gè)SpringBoot工程,按步驟選擇Web依賴和填寫信息之后,創(chuàng)建工程成功,如下圖:

你可能會(huì)好奇:
為什么沒有web.xml?
為什么沒有applicationContext.xml?
為什么沒有webapp目錄?
為什么多了HelloWorldApplication?
為什么多了application.properties?
先別急,咱們先從簡(jiǎn)單的搭建流程入手,答案在最后進(jìn)行揭曉。
3.POM依賴管理
打開工程的POM文件,查看繼承信息和相關(guān)依賴。
spring-boot-starter-parent作為父工程,提供SpringBoot和Spring的相關(guān)依賴定義。spring-boot-starter-web引入Web和WebMvc的相關(guān)依賴。
<!-- 繼承SpringBoot父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/>
</parent>
<!--PS: spring-boot-starter-xxx 開箱即用 無需指明版本 (默認(rèn)從父類繼承版本號(hào)) -->
<dependencies>
<!-- 添加WEB支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加Test支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
4.編寫RestAPI 輸出HelloWorld
Spring Initializr 已經(jīng)默認(rèn)幫我們創(chuàng)建了啟動(dòng)類,這里我們只需添加@Controller 和編寫相關(guān)RestAPI即可。
@SpringBootApplication
@Controller
public class SpringbootHelloworldApplication {
@GetMapping("/")
@ResponseBody
public String index() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(SpringbootHelloworldApplication.class, args); //啟動(dòng)項(xiàng)目
}
5. 啟動(dòng)項(xiàng)目
在上面的啟動(dòng)類中,右鍵選擇Run SpringbootHelloworldApplication ,查看控制臺(tái)如下:

在瀏覽器訪問:http://locahost:8080 ,返回結(jié)果如圖:

6.單元測(cè)試
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc //開啟MockMvc
public class SpringbootHelloworldApplicationTests {
@Autowired
private MockMvc mockMvc; //注入MockMvc
@Test
public void testHelloController() throws Exception {
mockMvc.perform(get("/")) //請(qǐng)求方式+地址
.andDo(print()) //打印效果
.andExpect(status().isOk()) //預(yù)期狀態(tài)
.andExpect(content().string(containsString("Hello World")));
}
}
三、快速答疑
為什么沒有XML?
回答:回顧傳統(tǒng)Spring項(xiàng)目,我們需要先后配置web/spring/mvc等XML配置文件。而SpringBoot則不需要XML,只需借助注解和啟動(dòng)類就能啟動(dòng)項(xiàng)目。這背后得益于SpringBoot自動(dòng)配置的構(gòu)建原理,例如我們?cè)赑OM文件引入了Web依賴,則項(xiàng)目在啟動(dòng)的時(shí)候檢測(cè)到ClassPath存在Web依賴,就會(huì)自動(dòng)執(zhí)行WEB環(huán)境初始化,輕松完成SpringMVC初始化。
為什么沒有webapp目錄?
回答:SpringBoot使用Resources目錄放置靜態(tài)文件和動(dòng)態(tài)資源。比如static目錄可以直接讀取CSS/JS/IMG等靜態(tài)資源,而templates目錄可以直接讀取動(dòng)態(tài)模板,例如Thymeleaf 和 FreeMarker 等。不過值得注意的是,如果工程項(xiàng)使用War類型進(jìn)行打包,則必須創(chuàng)建webapp目錄,更多細(xì)節(jié)請(qǐng)戳《SpringBoot 工程結(jié)構(gòu)說明》。
application.properties / application.yml 是什么?
回答:這是SpringBoot項(xiàng)目的核心配置文件,更多細(xì)節(jié)請(qǐng)閱讀《SpringBoot 配置文件詳解 》。
HelloWorldApplication 是什么?
回答:作為項(xiàng)目的啟動(dòng)類,添加Main方法作為啟動(dòng)入口,并添加@SpringBootApplication 便攜式啟動(dòng)注解。
@SpringBootApplication 主要包含三大組件:
- @EnableAutoConfiguration 開啟自動(dòng)配置.
- @ComponentScan 開啟組件掃描 例如@Controller,@Service等.
- @Configuration 標(biāo)記配置類 例如制定方法為上下文提供Bean.