Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的开发过程,提供了自动配置和默认配置,使得开发者只需专注于业务逻辑的实现,而不用去关注繁琐的配置问题。
Spring Boot具有以下特点:
简化配置:Spring Boot通过自动配置机制来减少配置的工作量。它会根据项目的依赖自动配置相关的组件,开发者只需要添加依赖和一些简单的配置即可。
快速开发:Spring Boot提供了一套完整的开发工具,包括代码生成器、热部署等,可以大大加快开发速度。
微服务支持:Spring Boot天生支持微服务架构,可以方便地构建和部署独立的微服务应用程序。
内嵌服务器:Spring Boot内嵌了常见的Web服务器(如Tomcat、Jetty等),可以以独立应用程序的形式运行,不需要额外安装Web服务器。
监控和管理:Spring Boot提供了丰富的监控和管理功能,可以方便地监控应用程序的运行状态和健康状况。
Spring Boot 提供了很好的支持来编写单元测试和实现热部署。下面我将简要介绍一下这两个方面的相关知识。
@RunWith(SpringRunner.class)来指定运行器,以便在测试过程中初始化Spring的应用上下文。 你可以使用@SpringBootTest注解标注测试类,以便在测试期间初始化Spring Boot应用的完整上下文。 你还可以使用@MockBean和@Mockito等注解来模拟依赖的外部组件或服务。 另外,Spring Boot还提供了一些其他有用的注解,如@DataJpaTest和@WebMvcTest等,用于测试特定领域或Web层的代码。以下是在Spring Boot中进行单元测试和相关部署的一些常用方法和技巧:
使用JUnit:JUnit是Java开发中最常用的单元测试框架之一。Spring Boot默认使用JUnit进行单元测试,可以使用@RunWith(SpringRunner.class)注解来启用Spring Boot的测试支持。可以使用@Test注解来标记测试方法。
使用Mockito:Mockito是一个用于创建和管理模拟对象(mock objects)的Java库。在单元测试中,我们可以使用Mockito来模拟一些外部依赖,以便更好地控制测试环境。例如,我们可以使用Mockito来模拟数据库访问,而不是实际访问数据库。
使用Spring Boot Test:Spring Boot Test提供了一系列用于测试Spring Boot应用程序的注解和类。例如,@SpringBootTest注解可以用于加载整个应用程序上下文,并进行集成测试。@WebMvcTest注解可以用于测试Web层的控制器。
使用测试配置文件:Spring Boot允许我们在单元测试中使用不同的配置文件,以便更好地控制测试环境。可以使用@TestProperites注解来指定测试配置文件的路径。在测试配置文件中,我们可以覆盖一些配置项,例如数据库连接、缓存配置等。
使用断言和断言库:在单元测试中,我们通常需要验证期望的结果与实际结果是否一致。可以使用JUnit的断言方法,如assertEquals和assertTrue来进行验证。此外,还可以使用一些流行的断言库,如AssertJ和Hamcrest来提供更多的断言方法。
运行单元测试:在Spring Boot中,我们可以使用Maven或Gradle等构建工具来运行单元测试。可以使用mvn test或gradle test命令来执行单元测试。
spring-boot-devtools模块,你可以在应用启动时自动配置热部署。只需将该模块添加到依赖中即可,无需进行其他配置。spring-boot-maven-plugin插件,你可以在代码改变时重新启动应用。只需在pom.xml文件中添加该插件的配置,并运行mvn spring-boot:run命令即可。另外,热部署还有一些其他的选项和配置方式,如使用Spring Loaded或JRebel等第三方工具。
以下是一些常用的热部署技巧和方法:
使用热部署插件:一些特定的框架和工具提供了热部署插件,可以用于在开发过程中实现热部署。例如,Spring Boot的Spring Loaded插件、JRebel的插件等。这些插件通常会提供自动监视和重新加载功能,从而实现快速开发和调试。

4 项目搭建步骤
在prom.xml配置
- "1.0" encoding="UTF-8"?>
"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">
-
4.0.0 -
-
com.sbl -
MavenSBlnit -
1.0-SNAPSHOT -
-
-
8 -
8 -
-
-
-
spring-boot-starter-parent -
org.springframework.boot -
2.1.3.RELEASE -
-
-
-
-
org.springframework.boot -
spring-boot-starter-web -
-
-
org.springframework.boot -
spring-boot -
-
-
org.springframework.boot -
spring-boot-starter-test -
test -
-
-
org.springframework.boot -
spring-boot-devtools -
-
-
在所创项目下的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 小孩 ";
- }
- }
在原本创建的类下(及主项目)
- 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类
- 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);
- }
- }