• SpringBoot2.0之七 实现页面和后台代码的热部署


    开发过程中我可能经常会因为修改一点点代码就需要重启项目而烦恼,这样不仅很繁琐,还会因为不断重启浪费大量的时间,无法提高工作效率。可是现在SpringBoot为我们提供了非常简单的方式让我们实现热部署。

    一、添加相关依赖

     <!-- 热部署依赖 start -->
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-devtools</artifactId>  
            <!-- <optional>true</optional> --><!-- 该属性网上很多文章说必须为true,经验证可以不用 -->  
            <scope>true</scope>  
    </dependency>  

        <!-- 热部署依赖 end -->

    二、新增一个文件

    import java.util.List;
    import com.somta.springboot.pojo.User;

    public interface UserDao {

    int addUser(User user);

    int deleteUserById(Long id);

    int updateUserById(User user);

    User queryUserById(Long id); 

    List<User> queryUserList();

    }

    启动项目,任意修改一段代码,保存代码,会发现系统自动重启了,如此简单就可以达到热部署了。

    三、静态资源实现热部署

            后台java代码通过上面的配置已经轻松实现了热部署,下面我们说说SpringBoot的静态资源的热部署,默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启的。

    在yml文件中添加如下配置,分别指定需要重启的文件夹和不需要重启的文件夹(测试发现除了排除的文件夹,其他文件夹修改都会触发重启,spring.devtools.restart.enabled=true 该属性可以快速启用和禁止热部署)

    spring:  
      devtools:
        restart:
          enabled: true
          #添加那个目录的文件需要restart
          additional-paths: src/main/java
          #排除那个目录的文件不需要restart
          exclude: static/**

    四、热部署原理分析

    1)SpringBoot内置了两个加载器,一个Base ClassLoader加载器,用于加载不会改变的第三方依赖的jar;另一个Restart ClassLoader加载器,用于加载自己编写的类;

    2)执行流程:当应用重启后,原先的Restart ClassLoader被丢掉、重新new一个Restart ClassLoader来加载这些修改过的东西,而Base ClassLoader却没有变化。这就是devtools重启速度快的原因。

    Git代码地址:https://gitee.com/Somta/SpringBoot/tree/master/SpringBoot-hotDeploy

    原文地址:http://somta.com.cn/#/blog/view/5da584874c534964866aa099e41f3b43
    ---------------------
    作者:明天的地平线
    来源:CSDN
    原文:https://blog.csdn.net/husong_/article/details/79984248
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    在Windows环境下使用docker
    C# 8.0中的模式匹配
    C# 8.0的新的using语法——Using declarations
    任务调度框架FluentScheduler简介
    任务调度框架Hangfire 简介
    Linux下的sqlserver简单试用
    使用Puppeteer进行数据抓取(五)——快速调试
    使用ptrace向已运行进程中注入.so并执行相关函数(转)
    ARM汇编编程基础之一 —— 寄存器
    ARM 汇编与C调用的若干问题(一般函数调用情况)
  • 原文地址:https://www.cnblogs.com/telwanggs/p/10791926.html
Copyright © 2020-2023  润新知