网站首页 > java教程 正文
测试与部署
Spring Boot之所以使用简单,是因为它的工程最终打包成了一个JAR包,并内嵌了Web容器,如Tomcat等,然后以JAR包的形式直接运行。随着云原生和云平台的发展,Spring Boot与Spring Cloud可以完美集成并被部署到云平台上。
测试
Spring Boot提供了很多实用的测试注解,可以在测试时使用。通常情况下,测试由spring-boot-test(包含核心元素)和springboot-test-autoconfigure(支持自动配置测试)两个模块支持,开发人员只需要依赖spring-boot-starter-test包即可。如果应用依赖了spring-boot-starter-test包,则同时依赖表3.3中的类库。
如果使用的是JUnit 4,则需要添加@RunWith(SpringRunner.class)注解;如果使用的是JUnit 5,则不需要添加该注解。Spring Boot提供了@SpringBootTest注解,当需要测试Spring Boot的特性时,该注解可以作为@ContextConfiguration注解的替代。@SpringBootTest注解通过SpringApplication创建测试中使用的ApplicationContext。
在默认情况下,@SpringBootTest注解不会启动服务器。可以通过设置@Spring-BootTest注解的webEnvironment属性来修改测试的运行方式。webEnvironment属性的取值如下:
MOCK(默认):加载Web应用程序上下文并提供模拟Web环境。使用该属性值不会启动嵌入的服务器,它可以与
@AutoConfigureMockMvc或@
AutoConfigure-WebTestClient注解结合使用。
RANDOM_PORT:加载一个
WebServerApplicationContext应用上下文并提供一个真实的Web环境。启动嵌入的服务器并在随机端口上进行监听。
DEFINED_PORT:加载
WebServerApplicationContext应用上下文并提供真实的Web环境。启动嵌入的服务器并在配置的端口上监听(在application.properties文件中配置)或者在默认端口8080上监听。
NONE:使用SpringApplication加载ApplicationContext应用上下文,但不提供任何Web环境。
以3.1.2节中新建的工程为例,测试一下HiController.java接口。代码如下:
@SpringBootTest(webEnvironment =
SpringBootTest.WebEnvironment.
RANDOM_PORT)
class SpringBootExampleApplicationTests {
@Test
public void testHiController(@Autowired
TestRestTemplate rest
Template) {
String body =
restTemplate.getForObject("/hi/springBoot",
String.class);
System.out.println(body);
}
}
如要要测试Spring MVC controllers是否正确工作,可以使用@WebMvcTest注解;如果要测试WebFlux,则使用@WebFluxTest注解。
Spring Boot test框架还提供了很多数据测试的注解,如@DataJpaTest、@JdbcTest、@DataMongoTest、@Data-RedisTest,以及客户端测试注解@RestClientTest等。
打包
在使用Spring Boot进行开发时,如果希望修改类文件或者配置文件后让修改立即生效,则需要用到热部署。在Spring Boot应用的pom文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
如果是MAVEN工程,Spring Boot提供了打包插件,在pom文件中集成以下插件即可。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
打包之后是一个JAR包,直接使用$ java -jar spring-bootexample.jar命令即可运行。Spring Boot的测试和部署会在后面的章节中继续介绍。
猜你喜欢
- 2025-06-10 钢铁+新型储能,这一组串式储能电站已运行超过10000小时
- 2025-06-10 SpringMVC全面解析:从核心原理到实战开发的完整指南
- 2025-06-10 一文彻底搞懂 Spring Boot 中 @Profile 注解的原理与实战用法
- 2025-06-10 Java面试场景题及答案总结(2025版持续更新)
- 2025-06-10 Jetty使用场景(jetty教程)
- 2025-06-10 Tomcat类加载机制(tomcat结构,类加载器流程)
- 2025-06-10 Disruptor—2.并发编程相关简介(并发编程出现问题的根源)
- 2025-06-10 Spring Boot热部署实现:让你的代码更改即刻生效
- 2025-06-10 Spring Boot热部署实现原理:优雅的代码重生术
你 发表评论:
欢迎- 06-13《Java培训:解锁面向对象思想的核心密码》
- 06-13Python学不会来打我(5)深拷贝和浅拷贝详解
- 06-13Java对象序列化与反序列化的那些事
- 06-13性能瓶颈诊断:如何揪出 Dubbo 大对象传输这个“幕后黑手”?
- 06-13如何理解 Java的值传递和引用传递
- 06-13每个计算机程序员至少应该读一次的前五本书籍
- 06-1310本大数据领域经典好书,助力你的学习
- 06-13除了看代码还能学习,Gitee七款优质开源图书/教程分享
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)