一:热加载与热部署
    热部署的意思就是不用手动重启环境,修改类后,项目会自动重启。但是如果项目比较大,重启也需要耗时十几秒左右。
    热加载意为不需要重新启动,修改了什么文件就重新加载什么文件,可以做到1,2秒左右就能看到效果。所以更节省时间。
    但是二者是互有利弊。热部署的好处是,重新启动,不存在修改文件和整个环境不一致的情况,而且是任何修改都生效。但是这里的热加载却有限制。吾经过测试发现,至少在修改controller上方法的requestMapping时是不会马上生效。因为这个是在启动时就已经加载的,所以这也是热加载修改什么加载什么带来的必然结果。
 
二:热部署
    热部署网上有很多博客,基本可以说是四步。
 
    1)修改build为自动编译
    
 
 
2)允许运行时编译:alt+ctrl+shift+/ 调出Registry,选中运行时编译
 
3)添加pom依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>
 
4)maven编译插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
这种方式就是修改后会自动重新启动,免去手工重启。并不能实现不重启而自动加载修改的类。
 
三:热加载
    要做到热加载需要两步。一是编译,二是加载。吾经过测试整理出以下:
    1)设置自动编译,见2.1
 
    2)设置运行运行时编译,见2.2
 
    3)设置手动“update”或者idea失去焦点时更新类与资源
 
 
4)以debug方式启动
 
    这样就能实现修改了类后,手动点击“update" 即idea下面的 刷新按钮,或者点开另外个程序,idea就会重新去加载更新的类。这时马上就能看到更新效果。(项目没有重启,但是会看到idea有一个刷新的动作)。这种方式的局限性前文已有说到。
    吾测试时,有以下几个坑。
    a)当不以debug方式启动时,设置允许自动编译后,就算反编译类,发现已经更改,就算去手动刷新(ctrl+F10)也不会起作用。我猜想是因为idea内置缓存的原因。所以必须以debug方式启动。
 
四:结尾
    正常的方式是,我们在开发一个功能后,才需要启动项目。或者debug方式去调试问题。至于说热部署和热加载,哪种更适合你的特殊需要,就格取所好吧!
 

idea的热加载与热部署的更多相关文章

  1. java热加载和热部署

    JAVA热部署和热加载 联系与区别 Java热部署与热加载的联系 1.不重启服务器编译/部署项目 2.基于Java的类加载器实现 区别 部署方式 热部署在服务器运行时重新部署项目 热加载在运行时重新加 ...

  2. nginx热加载、热升级、回滚

    修改完配置文件后使用 nginx -s reload 命令进行热加载 编译好新的 nginx 二进制文件后,运行nginx 开启nginx服务,然后使用 kill -USR2 新的nginx_mast ...

  3. Flutter 不能热加载,热重载按钮灰色,无法点击,flutter doctor 显示NO_PROXY is not set

    一.现象: Flutter 不能热加载 热重载按钮灰色,无法点击. 二.分析原因: 终端 flutter doctor 显示 NO_PROXY is not set 没有设置无代理的端口 终端:flu ...

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

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

  5. 原来热加载如此简单,手动写一个 Java 热加载吧

    1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...

  6. 使用JRebel插件实现SpringBoot应用代码热加载

    前言 在实际的开发过程中,我们经常修改代码之后,手动的重启项目,查看修改效果.那么有没有一种方式能够快速的.自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?是有的,在我之前的文章里面 ...

  7. JVM性能优化--类加载器,手动实现类的热加载

    一.类加载的机制的层次结构 每个编写的".java"拓展名类文件都存储着需要执行的程序逻辑,这些".java"文件经过Java编译器编译成拓展名为". ...

  8. java的热部署和热加载

    ps:热部署和热加载其实是两个类似但不同的概念,之前理解不深,so,这篇文章重构了下. 一.热部署与热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说 ...

  9. SpringBoot+gradle+idea实现热部署和热加载

    前言 因为之前使用myeclipes的同学就知道,在使用myeclipes的时候,java文件或者jsp文件写完之后会被直接热加载到部署的容器中,从而在开发的时候,不同经常去重启项目,从而达到了增加开 ...

随机推荐

  1. pandas | 如何在DataFrame中通过索引高效获取数据?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...

  2. 题解 洛谷 P3298 【[SDOI2013]泉】

    考虑到年份数很小,只有 \(6\),所以可以 \(2^6\) 来枚举子集,确定流量指数对应相同的位置,然后通过哈希和排序来计算相同的方案数. 但是这样计算出的是大于等于子集元素个数的方案数,所以还需要 ...

  3. Teambition如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接  Teambition如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1 ...

  4. 在Dockerfile中使用和“Source”的Run指令不起作用?

    报错误 /bin/sh: 1: source: not found sh不支持source bash支持source RUN rm /bin/sh && ln -s /bin/bash ...

  5. Jquery日历编写小练习

    日历练习 总体效果展示: 代码展示: 源代码部分 <body> <!-- 日历--> <div class="div_sty"> <tab ...

  6. 一文带你学习DWS数据库用户权限设计与管理

    前言 本文将介绍DWS基于RBAC(Role-Based Access Control,基于角色的访问控制)的数据库用户权限管理.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成 ...

  7. Java中包装类Test类测试出错的解决方法(JUnit5)

    import org.junit.jupiter.api.Test; public class TestJunit { public static void main(String[]args) {  ...

  8. 线程_互斥锁_Lock及fork创建子进程

    """ 创建锁 mutex = threading.Lock() 锁定 mutex.acquire([blocking]) 当blocking为True时,当前线程会阻塞 ...

  9. PHP acos() 函数

    实例 返回不同数的反余弦: <?phpecho(acos(0.64) . "<br>");echo(acos(-0.4) . "<br>&q ...

  10. linux条件测试操作(test)和if判断语句,while循环语句,break控制语句和for循环和case多分枝语句和select语句

    条件测试操作 条件测试是专为影响"$?"的操作,是条件转移.循环语句的基础   test测试命令: test 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0, ...