SpringBoot实践(四)——SpringBoot细节
前言
SpringBoot中还为我们提供了很多方便我们开发的依赖和技巧。这些技巧不但可以简化开发,还会对项目的运行提供帮助。
SpringBoot测试类
在开发过程中我们可能会针对各层服务之间的功能进行分别测试,这个时候我们就会频繁启动SpringBoot服务,然后去执行相关代码,这个样子在改动和启动过程中会浪费大量时间,所以我们可以直接应用构建SpringBoot项目自动生成的测试类,在测试类中直接针对对应方法或业务进行测试,具体体如下:
- 配置依赖
自动生成的SpringBoot项目中自动配置的一个依赖:
<!--SpringBoot测试依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- 测试模块:
// 该注解表示该启动器可以自行启动SpringBoot基础配置,然后执行相关的方法,这部分代码与生产方面并没有冲突
@SpringBootTest
class Springboot22117JspApplicationTests {
// 我们也可以在测试模块中注入相关的分层对象
private TestService testService;
@Autowired
public Springboot22117JspApplicationTests(){
this.testService = testService;
}
// 这个注解和JUnit测试单元注解的功能相似,底层区别可以自己找
@Test
void contextLoads() {
// 被@Test注解修饰的方法中的方法体可以直接被执行,不需要其他方法调用
}
}
- 测试使用
/* 这种启动类接口相当于入口类接口,如果我们需要分模块测试,可以直接写一个基础测试类,然后使用各个模块的测试类 来继承这个基础测试类。
*/
@SpringBootTest
public class BasicTests{
}
public class TestDemo extends BasicTests {
private TestService testService;
@Autowired
public Springboot22117JspApplicationTests(){
this.testService = testService;
}
@Test
void contextLoads() {
}
}
SpringBoot热部署
SpringBoot项目每次修改完后端业务代码后需要重新启动SpringBoot来部署修改过的部分,但是在项目在线上部署后,如果我们有修改后端业务逻辑的时候,我们重启项目将会对正在使用系统的用户造成影响。所以我们的原则是一般情况不重启,需要重启的时候尽量在凌晨这种用户使用较少的情况。
所以SpringBoot为我们提供了热部署工具。该工具的作用是项目修改后不需要重启就可以将修改后的项目重新部署到服务器上。具体操作如下:
- 引入依赖:
<!--热部署依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!--是否传递依赖,true为不传递,即以来该项目的项目不会部署热部署-->
<optional>true</optional>
</dependency>
- 修改配置
这些配置完后,我们重新启动项目,如果出现如下项目框选到的变化就证明热部署配置完成:
小结
个人认为热部署是一个相对鸡肋的功能,前端页面的改动我们可以通过配置文件开启不启动服务器来显示修改,后端的话可以通过postman接口测试工具来获取参数,业务方面的修改可以通过测试模块来查看业务逻辑是否有问题。热部署的配置仅仅将这些操作简化,方便我们开发,但是简化的效果并不是很强烈。所以感觉食之无味,弃之有肉。
但是这个热部署的思路在项目部署运行的时候有很大帮助,比如我们玩有些的时候总会遇到一些不停机更新,这其实就是一种热部署的逻辑,这方面大家了解即可。