SpringBoot第三集:热部署与单元测试(2020最新最易懂)

  有兴趣的可以先参考附录简单了解SpringBoot自动装配流程。

一.SpringBoot开发热部署

  项目开发中,你是否也遇到更新配置文件信息后,必须重启项目的,否则数据不更新的问题?

  Spring Boot提供了一个名为spring-boot-devtools的模块来使应用支持热部署,提高开发效率,修改后无需手动重启Spring Boot应用。使用也非常简单,在pom.xmI中加入devtools的依赖就可以了。当然,首次引入后,项目应用需要重启。否则不生效。

1 <!-- SpringBoot热部署依赖 -->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-devtools</artifactId>
5 </dependency>

二.SprongBoot单元测试

  对于java开发者而言,Junit应该无人不知了。所以SpringBoot也是基于Junit进行单位测试的。测试代码位置:建议在:src/test/java目录下

  SpringBoot测试开发,只需要在pom中引入测试依赖即可使用,默认SpringBoot会排除低版本的Junit测试包。(SpringBoot推荐使用Junit5.x或更高版本)

  JUnit中的注解测试常用注解:

    @BeforeClass:针对所有测试,在每个类加载的开始和结束时运行,必须为静态方法:static void
    @Before:初始化方法,执行当前测试类的每个测试方法前执行。
    @Test:测试方法,在这里可以测试期望异常和超时时间
    @After:释放资源,执行当前测试类的每个测试方法后执行
    @AfterClass:针对所有测试,在每个类加载的开始和结束时运行,必须为静态方法:static void
    @Ignore:忽略的测试方法(只在测试类的时候生效,单独执行该测试方法无效)基本不用
    @RunWith:可以更改测试运行器 ,用来告诉JUnit不要使用内置的org.junit.runner.Runner进行单元测试,而应该使用指定的类做单元测试,对于Spring单元测试总是要使用 SpringRunner.class 。(一般不用)
    一个单元测试类执行顺序为:

    @BeforeClass –> @Before –> @Test –> @After –> @AfterClass

    每一个测试方法的调用顺序为:

    @Before –> @Test –> @After

1.测试案例

  1. 新建SpringBoot项目,默认会导入测试依赖,如果没有请手动修改pom文件导入。

     1 <!-- SpringBoot测试依赖 -->
    2 <dependency>
    3 <groupId>org.springframework.boot</groupId>
    4 <artifactId>spring-boot-starter-test</artifactId>
    5 <scope>test</scope>
    6 <!-- 排除junit.vintage -->
    7 <exclusions>
    8 <exclusion>
    9 <groupId>org.junit.vintage</groupId>
    10 <artifactId>junit-vintage-engine</artifactId>
    11 </exclusion>
    12 </exclusions>
    13 </dependency>
  2. 在src/test/java目录下新建测试类。
      @SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解。
     1 @SpringBootTest
    2 class SpringBootApplicationTests {
    3
    4 @Autowired
    5 IDCard idcard;
    6
    7 @Test
    8 void contextLoads() {
    9 System.out.println("测试:"+idcard);
    10 }
    11
    12 }
  3. 选中测试方法名,右键执行Junit Test即可。
    其他的测试注解:略。自行演示!

附录

  SpringBoot自动装配原理分析

  查看@SpringBootApplication注解源码。

Mavne找到Spring-Boot-autoconfigrue依赖,进入包META-INF打开文件:spring.factories

在上图中,配置源会判断是否启用自动装配,也只会加载已启用的配置,只要我们在pom文件中引入的组件,SpringBoot都会帮我们自动配置。

可以通过在核心配置文件中添加如下代码,实现控制台显示配置详情:

debug: true

SpringBoot第三集:热部署与单元测试(2020最新最易懂)的更多相关文章

  1. SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?

    在SpringBoot开发调试中,如果我每行代码的修改都需要重启启动再调试,可能比较费时间:SpringBoot团队针对此问题提供了spring-boot-devtools(简称devtools)插件 ...

  2. SpringBoot第二集:注解与配置(2020最新最易懂)

    2020最新SpringBoot第二集:基础注解/基础配置(2020最新最易懂) 一.Eclipse安装SpringBoot插件 Eclipse实现SpringBoot开发,为便于项目的快速构建,需要 ...

  3. SpringBoot第四集:整合JdbcTemplate和JPA(2020最新最易懂)

    SpringBoot第四集:整合JdbcTemplate和JPA(2020最新最易懂) 当前环境说明: Windows10_64 Maven3.x JDK1.8 MySQL5.6 SpringTool ...

  4. SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂)

    SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂) 1.SpringBoot整合Druid Druid是阿里巴巴的一个开源项目,是一个数据库连接池的实现,结合了C3P0. ...

  5. SpringBoot第十集:i18n与Webjars的应用(2020最新最易懂)

    SpringBoot第十集:i18n与Webjars的应用(2020最新最易懂) 一,页面国际化 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符 ...

  6. SpringBoot第一集:入门(2020最新最易懂)

    2020最新SpringBoot第一集:入门(2020最新最易懂) 学习思路: 是什么?为什么要学,有什么用?有什么特点?简单明了的总结一句话! SpringBoot推荐开发工具: Spring To ...

  7. SpringBoot第四集:静态资源与首页定(2020最新最易懂)

    SpringBoot第四集:静态资源与首页定(2020最新最易懂) 问题 SpringBoot构建的项目结构如下:没有webapp目录,没有WEB-INF等目录,那么如果开发web项目,项目资源放在那 ...

  8. SpringBoot第五集:整合监听器/过滤器和拦截器(2020最新最易懂)

    SpringBoot第五集:整合监听器/过滤器和拦截器(2020最新最易懂) 在实际开发过程中,经常会碰见一些比如系统启动初始化信息.统计在线人数.在线用户数.过滤敏/高词汇.访问权限控制(URL级别 ...

  9. SpringBoot第九集:整合JSP和模板引擎Freemarker/Thymeleaf(2020最新最易懂)

    SpringBoot第九集:整合JSP和模板引擎(2020最新最易懂) 当客户通过前端页面提交请求后,我们以前是怎么做的?后端接收请求数据,处理请求,把响应结果交给模板引擎JSP,最后将渲染后的JSP ...

随机推荐

  1. python自动保存百度网盘资源,一定要看

    觉得有帮助的别忘了关注一下知识图谱与大数据公众号 开始 在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存 ...

  2. 文件上传限制条件(JS、后缀、文件名、类型、截断)绕过及修复建议

    在现代互联网的Web应用程序中,上传文件是一 种常见的功能,因为它有助于提高业务效率,比如企业的OA系统,允许用户上传图片.视频.头像和许多其他类型的文件.然而向用户提供的功能越多,Web应用受到攻击 ...

  3. Burp Suite的安装

    安装均在虚拟机环境下进行. 1.首先在浏览器找到java进行最新版本的安装. 2.然后找到burp suite 的安装包下载 不知道这一次 怎么直接跳过安装打开了.

  4. uni-app支付功能

    扫码查看原文 前言 近期一直在使用APP开发多端应用,IOS的APP.安卓的APP和H5网页,其中开发的APP使用到了微信和支付宝的支付,在此给大家分享出来,一起使用 前置条件: 开发环境:windo ...

  5. linux_命令格式和命令提示符

    # linux 中一切皆文件 命令格式: 命令 [功能选项] [文件路径] cmd [options] [path] # 多个功能选项,要放在一起,如 rsync -avz /backup backu ...

  6. [vue-webpack-template] webpack配置全局less引入

    1. 项目模板webpack vue init webpack <项目名> 2. 安装依赖 除了less所需的less less-loader两个包以外,还需要安装style-resour ...

  7. LeetCode刷题总结-DFS、BFS和回溯法篇

    本文总结LeetCode上有关深度优先搜索(DFS).广度优先搜索(BFS)和回溯法的算法题,推荐刷题总数为13道.具体考点分析如下图: 一.深度优先搜索 1.字符匹配问题 题号:301. 删除无效的 ...

  8. matlab find函数使用语法

    find 找到非零元素的索引和值 语法: 1. ind = find(X) 2. ind = find(X, k) 3. ind = find(X, k, 'first') 4. ind = find ...

  9. c#类(class)

    类 类的定义是以关键字class开始的,后面跟类的名称,类的主题包含一个花括号里,下面是类定义的一般格式. <access specifier> class class_name { // ...

  10. API可视化管理平台YApi

    Yapi是什么 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供了优秀的交互 ...