什麼是spring boot
從本質上來說,Spring Boot就是Spring,它做了那些沒有它你也會去做的Spring Bean配置。它使用“習慣優於配置”(項目中存在大量的配置,此外還內置了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的項目快速運行起來。使 用Spring Boot很容易創建一個獨立運行(運行jar,內嵌Servlet容器)、準生產級別的基於Spring框架的項目,使用Spring Boot你可以不用或者只需要很少的Spring配置。
使用spring boot優缺點
優點:配置簡單了
1.springboot內嵌了servlet容器,降低了對環境的要求,機器有java運行環境,可以將項目打包成jar包,通過java命令 java -jar ****.jar 來執行。
2.快速整合第三方框架,無需配置文件
3.解決了Spring的弊端
4.代碼少了、配置文件少了、不需要對第三方框架煩惱了、項目精簡了,對整個團隊的開發及維護來說,更大的節約了成本。
5.使用Java或Groovy開發基於Spring的應用程序非常容易。
6.它減少了大量的開發時間並提高了生產力。
7.它避免了編寫大量的樣板代碼,註釋和XML配置。
8.Spring Boot應用程序與其Spring生態系統(如Spring JDBC,Spring ORM,Spring Data,Spring Security等)集成非常容易。
它遵循“自用默認配置”方法,以減少開發工作量。
它提供嵌入式HTTP服務器,如Tomcat,Jetty等,以開發和測試Web應用程序非常容易。
它提供CLI(命令行界面)工具從命令提示符,非常容易和快速地開發和測試Spring Boot(Java或Groovy)應用程序。
它提供了許多插件來開發和測試Spring啓動應用程序非常容易使用構建工具,如Maven和Gradle。
它提供了許多插件,以便與嵌入式和內存數據庫工作非常容易。
缺點:將現有或傳統的Spring Framework項目轉換爲Spring Boot應用程序是一個非常困難和耗時的過程。它僅適用於全新Spring項目。
不廢話了,直接步入正題。。。
maven構建項目
2、選擇構建工具Maven Project、Spring Boot版本以及一些工程基本信息,點擊“Switch to the full version.”java版本選擇1.8,可參考下圖所示:
3、點擊Generate Project下載項目壓縮包
4、解壓後,使用eclipse,Import -> Existing Maven Projects -> Next ->選擇解壓後的文件夾-> Finsh,OK done!
這裏廢話幾句,有的人導入後,pom.xml第一行會報錯,如下圖所示:
解決辦法:
(1)Help——>Install New SoftWare
(2)點擊Add,在彈出框填入相關信息
https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST/
(3)按照安裝提示,一直next,重啓eclipse之後,執行maven-update project
好了,如果有這個問題的朋友,這樣應該就能解決了,繼續我們的話題
項目結構介紹
如上圖所示,Spring Boot的基礎結構共三個文件:
- src/main/java 程序開發以及主程序入口
- src/main/resources 配置文件
- src/test/java 測試程序
最後,啓動Application main方法,至此一個java項目搭建好了!
引入web模塊
1、pom.xml中添加支持web的模塊:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
pom.xml文件中默認有兩個模塊:
spring-boot-starter:核心模塊,包括自動配置支持、日誌和YAML;
spring-boot-starter-test:測試模塊,包括JUnit、Hamcrest、Mockito。
2、新建個存放controller包,並創建HelloWorldController類
package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//@RestController的意思就是controller裏面的方法都以json格式輸出,不用再寫什麼jackjson配置的了!
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index(){
return "Hello World!";
}
}
@RestController的意思就是controller裏面的方法都以json格式輸出,不用再寫什麼jackjson配置的了
3、啓動主程序,打開瀏覽器訪問http://localhost:8080/hello,就可以看到效果了!
如何做單元測試
打開的src/test/下的測試入口,編寫簡單的http請求來測試;使用mockmvc進行,利用MockMvcResultHandlers.print()打印出執行結果。
package com.example.demo;
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;
import com.example.demo.controller.HelloWorldController;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
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();
}
}
開發環境的調試
熱啓動在正常開發項目中已經很常見了吧,雖然平時開發web項目過程中,改動項目啓重啓總是報錯;但springBoot對調試支持很好,修改之後可以實時生效,需要添加以下的配置:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
總結
使用spring boot可以非常方便、快速搭建項目,使我們不用關心框架之間的兼容性,適用版本等各種問題,我們想使用任何東西,僅僅添加一個配置就可以,所以使用sping boot非常適合構建微服務