什么是Spring Boot
Spring Boot是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程插勤。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置瞬沦。用我的話來理解,就是Spring Boot其實不是什么新的框架箫锤,它默認配置了很多框架的使用方式,就像maven整合了所有的jar包雨女,Spring Boot整合了所有的框架(不知道這樣比喻是否合適)。
使用Spring Boot有什么好處
其實就是簡單戚篙、快速、方便岔擂!平時如果我們需要搭建一個spring web項目的時候需要怎么做呢位喂?
- 配置web.xml浪耘,加載spring和spring mvc
- 配置數(shù)據(jù)庫連接、配置spring事務(wù)
- 配置加載配置文件的讀取塑崖,開啟注解
- 配置日志文件
...
配置完成之后部署tomcat 調(diào)試
...
現(xiàn)在非常流行微服務(wù)七冲,如果我這個項目僅僅只是需要發(fā)送一個郵件,如果我的項目僅僅是生產(chǎn)一個積分规婆;我都需要這樣折騰一遍!
但是如果使用spring boot呢澜躺?
很簡單,我僅僅只需要非常少的幾個配置就可以迅速方便的搭建起來一套web項目或者是構(gòu)建一個微服務(wù)抒蚜!
使用Maven構(gòu)建項目
通過 SPRING INITIALIZR 工具生產(chǎn)基礎(chǔ)項目
總體流程:
- 訪問:http://start.spring.io/
- 選擇構(gòu)建工具Maven Project掘鄙、Spring Boot版本1.3.2以及一些工程基本信息
- 點擊Generate Project下載項目壓縮包
- 解壓項目包,并用IDE以Maven項目導(dǎo)入嗡髓,以IntelliJ IDEA 14為例:
- 菜單中選擇File–>New–>Project from Existing Sources...
- 選擇解壓后的項目文件夾操漠,點擊OK
- 點擊Import project from external model并選擇Maven,點擊Next到底為止饿这。
- 若你的環(huán)境有多個版本的JDK浊伙,注意到選擇Java SDK的時候請選擇Java 7以上的版本
導(dǎo)入Spring-boot 相關(guān)依賴
<dependencies>
<!--核心模塊,包括自動配置支持长捧、日志和YAML-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--測試模塊嚣鄙,包括JUnit、Hamcrest串结、Mockito-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--添加支持web的模塊-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--用于設(shè)置熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
啟動項目
編寫controller內(nèi)容
package com.pingkeke.springBoot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* HelloWorldController.
*/
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
/**
* spring-web-4.3.10.RELEASE.jar
spring-webmvc-4.3.10.RELEASE.jar
tomcat-embed-core-8.5.16.jar
http://localhost:8080/hello
Hello World
*
*/
運行DemoApplication中的main方法哑子,啟動服務(wù):
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.6.RELEASE)
服務(wù)啟動后,啟動主程序肌割,打開瀏覽器訪問http://localhost:8080/hello赵抢,就可以看到效果了,有木有很簡單声功!
如何做單元測試
打開的src/test/下的測試入口烦却,編寫簡單的http請求來測試;使用mockmvc進行先巴,利用MockMvcResultHandlers.print()打印出執(zhí)行結(jié)果其爵。
package com.pingkeke.springBoot.controller;
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.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
/**
* 編寫簡單的http請求來測試;使用mockmvc進行伸蚯,
* 利用MockMvcResultHandlers.print()打印出執(zhí)行結(jié)果摩渺。.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloWorldControlerTests {
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(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}
Spring Boot之熱部署
spring boot使用的是spring-boot-devtools是一個為開發(fā)者服務(wù)的一個模塊。其原理用了classLoader 其中一個加載不變的類剂邮,另一個restart ClassLoader加載變得類摇幻。
devtools會監(jiān)聽classpath下的文件變動,并且會立即重啟應(yīng)用(發(fā)生在保存時機)。
pom的依賴直接添加坐標(biāo)
<!--用于設(shè)置熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
編譯節(jié)點添加
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--用于設(shè)置熱部署,如果不配值將不會起作用-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
設(shè)置Idea
Ctrl+Shift+Alt+ /
重啟項目即可枉侧。