Spring Boot從入門到精通(一)搭建第一個Spring Boot程序


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM