SpringBoot开发实用篇主要包含6大部分,分别为热部署、配置高级、测试、数据层解决方案、整合第三方技术、监控。下面就开始一起学习吧。这篇文章包含前三个部分,即热部署、配置高级和测试。
目录
一、热部署
1.1、手动启动热部署
1.2、自动启动热部署
1.3、热部署范围配置
1.4、关闭热部署
二、配置高级
2.1、第三方Bean属性绑定
2.2、松散绑定
2.3、常用的计量单位应用
2.4、Bean属性校验
2.5、进制数据转换规则
三、测试篇
3.1、加载测试专用属性
3.2、测试类中启动web环境
3.3、发送MVC虚拟请求调用
3.4、虚拟请求匹配
3.5、业务层测试事务回滚
热部署就是当服务器发现内部的程序发生了变化,服务器做一个内部的重启。
首先要在pom.xml配置依赖坐标,然后再激活热部署即可。
org.springframework.boot
spring-boot-devtools
true
使用构建项目ctrl+F9完成热部署激活。
热部署的过程仅仅是restart过程,不是reload过程。
在设置中找到编译器,勾选其中的自动构建项目即可实现自动启动热部署,如下:
当然还需要设置在app运行的时候也启动热部署才行,在任意开发业界使用组合快捷键ctrl+shift+alt+/ 则会出现如下,选择注册,勾选当app运行时候允许自动构建。
因为在默认情况下,有些是自动触发热部署,有些是不自动出发热部署,一般默认不触发热部署的目录如下所示。
那么如果我想让一些默认触发热部署的也不触发,那么需要在配置文件中进行配置,排除选项,对某些文件夹进行排除操作。
热部署仅在开发环境中有意义,在上线的时候不需要热部署了,可以设置关闭热部署,可以在启动类中设置关闭热部署。
注解@ConfigurationProperties可以为自己开发的bean绑定属性,如下所示。在配置文件配置属性,然后和bean进行绑定。
@Data注解是lombok的注解,避免写setter和getter等方法,@Component是定义bean。
注解@ConfigurationProperties也可以为第三方bean绑定属性,定义第三方bean,然后进行datasource配置绑定。
也可以使用@EnableConfigurationProperties注解进行bean绑定,要输入第三方bean的类名,同时在第三方bean上不需要再加@Component注解,否则会冲突。
@ConfigurationProperties支持松散绑定,就是对bean进行绑定时,写成驼峰模式、下划线模式、中划线模式、常量模式都是可以的,不需要和bean中定义的变量名一模一样。
注意:要是@Value注解进行bean绑定要求属性名必须完全一致才能完成绑定。
注意:@ConfigurationProperties支持松散绑定,但是绑定的规范要求必须是小写字母、数字、下划线才行,不支持大写字母。
JDK8提供了常用的时间和空间单位,如下所示,了解即可。
首先在配置文件pom.xml中配置校验规范坐标,如下所示。
第2步,开启对当前bean的顺属性校验,一个注解@Validated。
第3步,设置具体的校验规则,校验规则是自己定义的,如下设置端口号最大不超过400。
对于加载配置,我们可以设置测试环境的临时属性,这样就可以覆盖原来设置的属性值。
另外一种设置测试环境临时属性的方法如下,该方法的优先级最高。
可以使用@Import注解加载当前测试类的专用配置,这样就方便管理。
关于web环境的启动模拟,设置web环境即可,可选的模式有如下四种。常用的是随机端口和自定义端口模拟。
对于web环境中发送虚拟请求,首先使用@AutoConfigureMockMvc开启虚拟MVC调用,然后注入调用对象,通过调用对象调用创建的虚拟请求。
我们一般想知道对于表现层的虚拟请求有没有匹配成功,需要根据状态匹配器定义预期状态,然后将本次真实执行结果与预期结果进行对比。
对于响应体的匹配,即匹配执行结果, 这一次是内容的匹配,根据记过匹配器定义预取结果,和真实结果进行对比。
上面做的是字符串的匹配,但是正常我们应该是做json匹配,对于json的匹配和字符串匹配一样的,方法相同。
对于虚拟请求头的匹配,也是先定义虚拟头部匹配器,根据匹配器定义预期匹配头,根据实际和预期进行对比。
在测试类上加@Transactional注解,可以对提交的事务进行回滚操作,防止脏数据写入。