1? ? ? ? Spring Boot的簡(jiǎn)介
Spring Boot是一個(gè)用于構(gòu)建獨(dú)立的、生產(chǎn)級(jí)別的Spring應(yīng)用程序的框架。它簡(jiǎn)化了Spring應(yīng)用程序的開(kāi)發(fā)過(guò)程,提供了自動(dòng)配置和默認(rèn)配置,使得開(kāi)發(fā)者只需專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而不用去關(guān)注繁瑣的配置問(wèn)題。
Spring Boot具有以下特點(diǎn):
-
簡(jiǎn)化配置:Spring Boot通過(guò)自動(dòng)配置機(jī)制來(lái)減少配置的工作量。它會(huì)根據(jù)項(xiàng)目的依賴自動(dòng)配置相關(guān)的組件,開(kāi)發(fā)者只需要添加依賴和一些簡(jiǎn)單的配置即可。
-
快速開(kāi)發(fā):Spring Boot提供了一套完整的開(kāi)發(fā)工具,包括代碼生成器、熱部署等,可以大大加快開(kāi)發(fā)速度。
-
微服務(wù)支持:Spring Boot天生支持微服務(wù)架構(gòu),可以方便地構(gòu)建和部署獨(dú)立的微服務(wù)應(yīng)用程序。
-
內(nèi)嵌服務(wù)器:Spring Boot內(nèi)嵌了常見(jiàn)的Web服務(wù)器(如Tomcat、Jetty等),可以以獨(dú)立應(yīng)用程序的形式運(yùn)行,不需要額外安裝Web服務(wù)器。
-
監(jiān)控和管理:Spring Boot提供了豐富的監(jiān)控和管理功能,可以方便地監(jiān)控應(yīng)用程序的運(yùn)行狀態(tài)和健康狀況。
2? ? ? ?Spring Boot的單元測(cè)試以及熱部署的相關(guān)知識(shí)
Spring Boot 提供了很好的支持來(lái)編寫(xiě)單元測(cè)試和實(shí)現(xiàn)熱部署。下面我將簡(jiǎn)要介紹一下這兩個(gè)方面的相關(guān)知識(shí)。
2.1????????單元測(cè)試: Spring Boot 使用了JUnit作為默認(rèn)的單元測(cè)試框架,可以通過(guò)注解@RunWith(SpringRunner.class)來(lái)指定運(yùn)行器,以便在測(cè)試過(guò)程中初始化Spring的應(yīng)用上下文。 你可以使用@SpringBootTest注解標(biāo)注測(cè)試類,以便在測(cè)試期間初始化Spring Boot應(yīng)用的完整上下文。 你還可以使用@MockBean和@Mockito等注解來(lái)模擬依賴的外部組件或服務(wù)。 另外,Spring Boot還提供了一些其他有用的注解,如@DataJpaTest和@WebMvcTest等,用于測(cè)試特定領(lǐng)域或Web層的代碼。
以下是在Spring Boot中進(jìn)行單元測(cè)試和相關(guān)部署的一些常用方法和技巧:
-
使用JUnit:JUnit是Java開(kāi)發(fā)中最常用的單元測(cè)試框架之一。Spring Boot默認(rèn)使用JUnit進(jìn)行單元測(cè)試,可以使用
@RunWith(SpringRunner.class)
注解來(lái)啟用Spring Boot的測(cè)試支持??梢允褂?code>@Test注解來(lái)標(biāo)記測(cè)試方法。 -
使用Mockito:Mockito是一個(gè)用于創(chuàng)建和管理模擬對(duì)象(mock objects)的Java庫(kù)。在單元測(cè)試中,我們可以使用Mockito來(lái)模擬一些外部依賴,以便更好地控制測(cè)試環(huán)境。例如,我們可以使用Mockito來(lái)模擬數(shù)據(jù)庫(kù)訪問(wèn),而不是實(shí)際訪問(wèn)數(shù)據(jù)庫(kù)。
-
使用Spring Boot Test:Spring Boot Test提供了一系列用于測(cè)試Spring Boot應(yīng)用程序的注解和類。例如,
@SpringBootTest
注解可以用于加載整個(gè)應(yīng)用程序上下文,并進(jìn)行集成測(cè)試。@WebMvcTest
注解可以用于測(cè)試Web層的控制器。 -
使用測(cè)試配置文件:Spring Boot允許我們?cè)趩卧獪y(cè)試中使用不同的配置文件,以便更好地控制測(cè)試環(huán)境??梢允褂?code>@TestProperites注解來(lái)指定測(cè)試配置文件的路徑。在測(cè)試配置文件中,我們可以覆蓋一些配置項(xiàng),例如數(shù)據(jù)庫(kù)連接、緩存配置等。
-
使用斷言和斷言庫(kù):在單元測(cè)試中,我們通常需要驗(yàn)證期望的結(jié)果與實(shí)際結(jié)果是否一致??梢允褂肑Unit的斷言方法,如
assertEquals
和assertTrue
來(lái)進(jìn)行驗(yàn)證。此外,還可以使用一些流行的斷言庫(kù),如AssertJ和Hamcrest來(lái)提供更多的斷言方法。 -
運(yùn)行單元測(cè)試:在Spring Boot中,我們可以使用Maven或Gradle等構(gòu)建工具來(lái)運(yùn)行單元測(cè)試??梢允褂?code>mvn test或
gradle test
命令來(lái)執(zhí)行單元測(cè)試。
2.2????????熱部署: 在開(kāi)發(fā)階段,熱部署可以使你的代碼更快地重新部署和運(yùn)行。Spring Boot支持兩種類型的熱部署:
- 通過(guò)使用
spring-boot-devtools
模塊,你可以在應(yīng)用啟動(dòng)時(shí)自動(dòng)配置熱部署。只需將該模塊添加到依賴中即可,無(wú)需進(jìn)行其他配置。 - 通過(guò)使用
spring-boot-maven-plugin
插件,你可以在代碼改變時(shí)重新啟動(dòng)應(yīng)用。只需在pom.xml文件中添加該插件的配置,并運(yùn)行mvn spring-boot:run
命令即可。
-
另外,熱部署還有一些其他的選項(xiàng)和配置方式,如使用Spring Loaded或JRebel等第三方工具。
以下是一些常用的熱部署技巧和方法:
- 使用開(kāi)發(fā)工具的自動(dòng)重載功能:許多集成開(kāi)發(fā)環(huán)境(IDE)和開(kāi)發(fā)工具都提供了自動(dòng)重載功能,可以自動(dòng)監(jiān)視代碼的變化并重新加載應(yīng)用程序。例如,Eclipse中的Spring Loaded插件、IntelliJ IDEA中的Spring Boot DevTools等。
- 使用Spring Boot的開(kāi)發(fā)者工具(DevTools):Spring Boot DevTools提供了一套開(kāi)發(fā)者工具,可以實(shí)現(xiàn)熱部署和快速重新啟動(dòng)應(yīng)用程序。它會(huì)監(jiān)視應(yīng)用程序的類文件和資源文件的變化,并在檢測(cè)到變化時(shí)自動(dòng)重新加載應(yīng)用程序。
- 使用JRebel:JRebel是一個(gè)用于Java開(kāi)發(fā)的工具,可以實(shí)現(xiàn)即時(shí)的代碼熱部署。它可以監(jiān)視文件的變化,并將修改的類文件和資源文件重新加載到運(yùn)行中的應(yīng)用程序中,從而避免了重新啟動(dòng)應(yīng)用程序。
- 使用Docker容器:將應(yīng)用程序部署在Docker容器中,可以實(shí)現(xiàn)快速部署和更新。通過(guò)構(gòu)建一個(gè)容器鏡像并運(yùn)行容器,可以在容器內(nèi)部使用熱部署技術(shù)來(lái)更新代碼。修改后的容器鏡像可以輕松地重新部署到生產(chǎn)環(huán)境中。
使用熱部署插件:一些特定的框架和工具提供了熱部署插件,可以用于在開(kāi)發(fā)過(guò)程中實(shí)現(xiàn)熱部署。例如,Spring Boot的Spring Loaded插件、JRebel的插件等。這些插件通常會(huì)提供自動(dòng)監(jiān)視和重新加載功能,從而實(shí)現(xiàn)快速開(kāi)發(fā)和調(diào)試。
3? ? ? ? 效果圖
4? ? ? ? 項(xiàng)目搭建步驟
在prom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sbl</groupId>
<artifactId>MavenSBlnit</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
在所創(chuàng)項(xiàng)目下的src.main.java的包下面建立controller包,并建立類HelloWporld
package com.sbl.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorld {
@GetMapping("/hello")
public String hello(){
return "Hello World,i am 小孩 ";
}
}
在原本創(chuàng)建的類下(及主項(xiàng)目)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-838981.html
package com.sbl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class
MavenApplication {
public static void main(String[] args){
SpringApplication.run(MavenApplication.class,args);
}
}
在test在Java文件下的包下建立test類文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-838981.html
package com.sbl.chapter01sbinit;
import com.sbl.controller.HelloWorld;
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.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class Chapter01SbinitApplicationTests {
@Autowired
private HelloWorld helloWorld;
@Test
public void contextLoads(){
String hello= helloWorld.hello();
System.out.println(hello);
}
}
到了這里,關(guān)于Spring Boot單元測(cè)試與熱部署簡(jiǎn)析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!