SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個(gè) WEB 工程
未接觸 SpringBoot 之前,搭建一個(gè)普通的 WEB 工程往往需要花費(fèi)30分鐘左右,如果遇到點(diǎn)奇葩的問題耽擱的時(shí)間會(huì)更長(zhǎng)一點(diǎn),但自從用了SpringBoot 后,真正體會(huì)到什么叫分分鐘搭建一個(gè)WEB,讓我擁有更多的時(shí)間跟我的小伙伴們嘮嗑了。使用 SpringBoot 后發(fā)現(xiàn)一切是如此的簡(jiǎn)單(還記得讀書那會(huì)被JAR包,xml支配的恐懼嗎,如今都可以說 good bye)
設(shè)計(jì)的目標(biāo)
為所有使用 Spring 的開發(fā)者提供一個(gè)更簡(jiǎn)單,快速的入門體驗(yàn)
提供一些常見的功能、如監(jiān)控、WEB容器,健康,安全等功能
干掉XML,遵循規(guī)范,開箱即用
SpringBoot 為我們提供了一系列的依賴包,所以需要構(gòu)建工具的支持:Maven 或 Gradle。由于本人更習(xí)慣使用Maven所以后續(xù)案例都是基于Maven 與 IntelliJ IDEA,同時(shí)這里是基于最新的SpringBoot2編寫的哦...
初次接觸,我們先來看看如何創(chuàng)建一個(gè)Spring Boot項(xiàng)目,這里以IntelliJ IDEA為例,其他的IDE工具小伙伴們自行搜索創(chuàng)建方式。創(chuàng)建完項(xiàng)目后,各位小伙伴請(qǐng)認(rèn)真、細(xì)心的對(duì)比下與傳統(tǒng)的WEB工程有何區(qū)別(如:目錄結(jié)構(gòu))。
點(diǎn)擊File -> Project
如果用過 Eclipse/IDEA 等工具的,對(duì)創(chuàng)建項(xiàng)目肯定不會(huì)陌生,但為了照顧第一次使用的我貼上了圖文

選擇Spring Initializr
到這一步選擇的時(shí)候,如圖中選項(xiàng)的是Spring Initializr(官方的構(gòu)建插件,需要聯(lián)網(wǎng)),第二個(gè)是自己選擇Maven構(gòu)建,為了更好的適合初學(xué)者,我們將在本章用插件構(gòu)建

填寫項(xiàng)目基本信息
Group: 組織ID,一般分為多個(gè)段,這里我只說兩段,第一段為域,第二段為公司名稱。域又分為 org、com、cn等等,其中 org為非營(yíng)利組織,com為商業(yè)組織。如阿里、淘寶(com.alibaba/com.taobao)
Artifact: 唯一標(biāo)識(shí)符,一般是項(xiàng)目名稱

選擇包
Spring Initializr 為我們提供了很多的選項(xiàng),不同的選項(xiàng)有不同的作用,在初期我們只需要依賴Web -> Web 就可以了,選擇好依賴包之后點(diǎn)擊Next -> Finish

目錄結(jié)構(gòu)
- src
-main
-java
-package
#主函數(shù),啟動(dòng)類,運(yùn)行它如果運(yùn)行了 Tomcat、Jetty、Undertow 等容器
-SpringbootApplication
-resouces
#存放靜態(tài)資源 js/css/images 等
- statics
#存放 html 模板文件
- templates
#主要的配置文件,SpringBoot啟動(dòng)時(shí)候會(huì)自動(dòng)加載application.yml/application.properties
- application.yml
#測(cè)試文件存放目錄
-test
# pom.xml 文件是Maven構(gòu)建的基礎(chǔ),里面包含了我們所依賴JAR和Plugin的信息
- pom
初窺配置文件
從啟動(dòng)日志中可以發(fā)現(xiàn),SpringBoot 默認(rèn)的端口是 8080 ,那么如果端口被占用了怎么辦呢?不要慌,問題不大,配置文件分分鐘解決你的困擾…
2018-04-20 16:14:46.725 INFO 11184 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
修改默認(rèn)配置
# 默認(rèn)的 8080 我們將它改成 9090
server.port=9090
# 未定義上下文路徑之前 地址是 http://localhost:8080 定義了后 http://localhost:9090 你能在tomcat做的事情,配置文件都可以
server.servlet.context-path=/springboot-test
在啟動(dòng)一次看看日志
2018-04-20 16:47:05.716 INFO 12108 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http) with context path '/springboot-test'
測(cè)試
本次測(cè)試采用 junit 進(jìn)行,當(dāng)然也可以啟動(dòng)項(xiàng)目后直接訪問 http://localhost:9090/springboot-test/demo1 進(jìn)行測(cè)試
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;
import java.net.URL;
import static org.junit.Assert.assertEquals;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SpringbootTestApplication{
@LocalServerPort
private int port;
private URL base;
@Autowired
private TestRestTemplate template;
@Before
public void setUp() throws Exception {
// TODO 因?yàn)槲覀冃薷牧?content-path 所以請(qǐng)求后面要帶上
this.base = new URL("http://localhost:" + port + "/springboot-test/demo1");
}
@Test
public void demo1() throws Exception {
ResponseEntity<String> response = template.getForEntity(base.toString(), String.class);
assertEquals(response.getBody(), "Hello world");
}
}
拓展知識(shí)
自定義Banner
SpringBoot 啟動(dòng)的時(shí)候我們可以看到如下內(nèi)容,這一塊其實(shí)是可以自定義的哦,而且在 2.X 版本中,它支持的格式從文本擴(kuò)展到banner.txt、banner.jpg、banner.gif、banner.jpeg 等等,只需要在 resouces 目錄下添加指定命名的文件即可
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.2)
總結(jié)
目前很多大佬都寫過關(guān)于 SpringBoot 的教程了,如有雷同,請(qǐng)多多包涵,本教程基于最新的 spring-boot-starter-parent:v2.1.2編寫,包括新版本的特性都會(huì)一起介紹…