Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Boot致力於在蓬勃發展的快速應用開發領域(rapid application devel ...
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。
Spring Boot是基於Spring框架基礎上推出的一個全新的框架, 旨在讓開發者可以輕鬆地創建一個可獨立運行的,生產級別的應用程式。基於Spring Boot內部的自動化配置功能,開發者可以在“零”配置, 或者只需要添加很少的配置,就可以進行日常的功能開發。
Spring Boot的特點
—
1)創建獨立的Spring應用程式;
2)直接嵌入Tomcat,Jetty或Undertow,無需部署WAR文件;
3)提供推薦的基礎POM文件(starter)來簡化Apache Maven配置;
4)儘可能的根據項目依賴來自動配置Spring框架;
5)提供可以直接在生產環境中使用的功能,如性能指標,應用信息和應用健康檢查;
6)開箱即用,沒有代碼生成,不需要配置過多的xml。同時也可以修改預設值來滿足特定的需求。
7)其他大量的項目都是基於Spring Boot之上的,如Spring Cloud。
Spring Boot優缺點
—
優點
1)Spring Boot可以支持開發人員快速的開發出restful風格的微服務架構;
2)Spring Boot自動化確實方便,做微服務再合適不過了,單一jar包部署和管理都非常方便。只要系統架構設計合理,大型項目也能用,加上nginx負載均衡,輕鬆實現橫向擴展;
3)Spring Boot要解決的問題, 精簡配置是一方面, 另外一方面是如何方便的讓spring生態圈和其他工具鏈整合(比如Redis,email,elasticsearch)。
優點
1)版本迭代速度更新太快,一些模塊的改動很大;
2)由於無需配置或少量配置,報錯時定位比較有難度;
3)網上現有資源的解決方案比較少見。
Spring Boot的核心功能
—
1)獨立運行spring項目。Spring Boot以jar包的形式可以獨立運行,使用java -jar xx.jar 就可以成功運行項目。
2)內嵌servlet容器。內嵌容器,使得我們可以執行運行項目的主程式main函數,使得項目可以快速運行。
3)提供starter簡化Maven配置。Spring Boot提供了一系列的start pol用來簡化maven依賴。如:常用的spring-boot-starter-web、spring-boot-starter-tomcat、spring-boot-starter-actuator等。
Spring Boot推薦基礎POM文件
4)自動配置spring。Spring Boot會根據我們項目中類路徑的jar包,為jar包的類進行自動裝配bean。
5)應用監控。Spring Boot提供了基於HTTP、ssh、telnet對運行時的項目進行監控。
搭建第一個Spring Boot程式
—
環境準備
一個比較不錯的文本編輯器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、IntelliJ IDEA)
Java環境(JDK 1.8或以上版本)
Maven 3.0+IntelliJ IDEA(Eclipse和IntelliJ IDEA內置,如果使用IDE並且不使用命令行工具可以不安裝)。
maven構建項目
1)官網地址:http://start.spring.io/
2)選擇構建工具
Project(項目):Maven Project;
Language(語言):Java;
Spring Boot(版本):2.3.0M2;
Project Metadata(項目元數據):Group [com.yoodb]和Artifact[demo];
Dependencies(依賴關係):
[Name:springboot-study-demo01;
Description:Demo project for Spring Boot;
Package name:com.yoodb.study.demo01;
Package name:War;Java(JDK):8],可參考如圖所示:
Spring Boot2.3.0.M2這一個裡程碑的主要包括:改進Docker鏡像支持;升級到 MongoDB 4(仍處於 beta 版);支持配置文件的通配符位置;眾多依賴項升級。
3)點擊“Generate-Crtl+”按鈕下載項目壓縮包;
4)解壓後,使用IntelliJ IDEA,Project Settings -> + ,導入Maven項目後點擊“OK”,如圖所示:
5)選中右側Maven菜單,執行install命令,等待執行完成,如圖所示:
目錄結構
Maven項目導入成功後,目錄結構如下圖所示:
Spring Boot的基礎結構共三個文件:
src/main/java 程式開發以及主程式入口
src/main/resources 配置文件
src/test/java 測試程式
Spring boot官方建議的目錄結果如下:
root package結構:com.example.yourproject
com +- example +- yourproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- controller | +- CustomerController.java |
1)Application.java 建議放到根目錄下麵,主要用於做一些框架配置;
2)domain目錄主要用於實體(Entity)與數據訪問層(Repository);
3)service 層主要是業務類代碼;
4)controller 負責頁面訪問控制。
採用預設配置可以省去很多配置,當然也可以根據自己的喜歡來進行更改,到此一個Spring boot框架的Maven項目搭建完成。
Maven項目啟動
編寫controller類文件,代碼如下所示:
package com.yoodb.study.demo01; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @RequestMapping("/hello") public String index() { return "關註微信公眾號“Java精選”,Spring Boot系列文章持續更新中,帶你從入門到精通,玩轉Spring Boot框架。"; } }
註:@RestController的含義是controller裡面的方法都以json格式輸出。
啟動主程式,執行如圖所示:
打開瀏覽器訪問http://localhost:8080/hello,就可以看到效果了,是不是感覺很簡單,那麼大家趕緊試一試吧!歡迎關註微信公眾號“Java精選”,持續更新Spring Boot系列文章,供大家參考和學習。
Spring Boot如何做單元測試?
—
打開的src/test/下的測試入口,編寫簡單的http請求來測試;使用mockmvc進行,利用MockMvcResultHandlers.print()列印出執行結果。
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = MockServletContext.class) @WebAppConfiguration 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(); } }
另外,官方提供了一種比較新的註解測試方法,具體代碼參考如下:
@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開發環境的調試
—
熱啟動(熱部署)在正常開發項目中已經很常見了,雖然平時開發web項目過程中,改動項目重啟總是報錯;但Spring Boot對調試支持很好,修改之後可以實時生效,需要添加以下的配置:
<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>
註:該模塊在完整的打包環境下運行的時候會被禁用。如果你使用java -jar啟動應用或者用一個特定的classloader啟動,它會認為這是一個“生產環境”。
轉載自:https://blog.yoodb.com/yoodb/article/detail/1561