springboot基于IDEA环境热加载与热部署教程

目录
  • 一、使用Jrebel插件
  • 二、devtools实现热加载
    • 1.1.引入devtools的maven依赖
    • 1.2.设置IDEA
    • 1.3.修改一下application.properties配置
    • 1.4.LiveReload插件
    • 1.5.最后测试一下

在实际的开发过程中,我们经常修改代码之后,手动的重启项目,手动刷新浏览器查看修改效果。那么有没有一种方式能够快速的、自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?肯定是有的,但是对于这个功能很多人对功能的叫法有争议,笔者查询了维基百科、官方文档,没有得到合理的答案,也没有权威的定义,笔者知道的就有:热启动、热加载、热更新、热部署、热切换。这几个词从语义上是有区别的,但是叫什么并不重要,实现了最重要,毕竟绝大部分程序员为了使用这个功能方便开发,也不是专业的搞学术研究的。

如果哪位朋友获得了权威渠道的说法,可以将文档连接反馈给我。我再理解一下,争取做到学术研究级别的一丝不苟!在此之前笔者按照自己的想法和英文翻译的角度去使用这些名词。

一、使用Jrebel插件

这是最简单的一种方式,但是有一定的个局限性,Jrebel插件是收费的。虽然有破解方案,但是不建议!有需要的同学自行研究,这里就不多做介绍了。

Jrebel插件在有些Spring Boot版本不够兼容,会报错,越新的版本越容易报错。所以笔者目前还是选择性放弃使用该方法!

第一步:安装插件,按照箭头所示选择安装。安装完成之后,要重启IDEA才能生效。

第二步:激活。在安装完成之后,右上角会多出这样几个按钮。点击之后会提示你进行插件激活,可以注册码激活,也可以在线激活。也可以填写个人姓名、邮箱、电话之后获取10天的试用!

第三步:更新操作触发配置,这个配置不仅结合Jrebel使用有效,对于其他的方式实现开发过程中需要自动更新的情况下,也要勾选上。

在Spring Boot项目启动配置中,选择下图中的红色框中的内容:uodate classes and resources on ‘update’ action

配置完成后,通过右上角的JR按钮启动SpringBoot项目。就可以实现改动代码和资源的自动更新。

二、 devtools实现热加载

这是一种对于SpringBoot而言比较常见的一种实现方式。

1.1.引入devtools的maven依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <optional>true</optional>
</dependency>

spring-boot-devtools从名称就可以看出来,是开发者工具包,其主要的功能就是实现热加载。

其实现原理就是两个ClassLoader,一个负责加载那些不会经常改变的文件,比如:第三方jar包,一旦引入项目之后这部分代码在调试过程中就处于不变的状态;一个负责加载可能经常改变的类,比如我们自己在项目中写的代码,被称为restart ClassLoader。当有代码发生改变的时候,重建一个restart ClassLoader,原有的restart ClassLoader被丢掉。由于每次重新加载的内容较少,所以速度比手动重启更快一些。

1.2.设置IDEA

首先,运行时编译配置:组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running” 。

其次,自动化编译配置: “File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Make project automatically” 。这是一种重新自动化的编译整体项目的方法。但是笔者一般不这么做,因为IDEA的文件是自动保存的,你想修改一个字符串,有可能你只修改完成第一个字符它就重新编译了,重新加载启动。所以,笔者一般代码修改完成之后,使用Ctrl + F9快捷键对修改类重新编译,而不是做项目的自动化编译。

  • 最后,在一些相对旧的IDEA版本上运行时配置,按如下图形勾选。(新版本IDEA已经不需要了)

1.3.修改一下application.properties配置

在比较新的Spring Boot devtools版本中我们已经不需要做如下的配置了,但是如果你以上的步骤都完成了,仍然无法实现代码更改之后的热加载,请参考下面的方法。在有些版本我们需要配置热加载生效的开关,使其值等于true。

下文是properties格式配置,喜欢yml格式的同学可以自行调整一下。默认情况下,支持热加载的目录如下,如果需要其它目录下文件支持热加载需要手动配置:

/META-INF/maven

/META-INF/resources

/resources

/static

/public

/templates

#热加载生效
spring.devtools.restart.enabled=true
#额外新增的热加载目录
spring.devtools.restart.additional-paths= src/main/java
#热加载排除目录
#spring.devtools.restart.exclude=

1.4.LiveReload插件

最后建议你去chrome 浏览器插件商店安装一个插件叫做LiveReload。

Spring devtools默认会启动一个 Live Reload Server实例,监听文件的变化。并实时的与浏览器插件通信,更新浏览器展示界面。这样,你就不用每次更改内容之后都点击浏览器刷新按钮了。

1.5.最后测试一下

改一下代码,看看会不会生效。通常不生效的原因有两种:

  • JDK编译版本和运行版本不统一,自行学习一下IDEA环境下JDK配置
  • 浏览器缓存或者其他的缓存软件导致的问题

以上就是springboot在IDEA环境下的热加载与热部署教程的详细内容,更多关于springboot在IDEA环境下热加载部署教程的资料请关注我们其它相关文章!

(0)

相关推荐

  • SpringBoot如何IDEA中实现热部署

    好的热部署让开发调试事半功倍,这样的"神技能"怎么能错过呢, 使用过IDEA的童鞋赶紧进来撸一把吧. 学习目标 快速学会在项目中使用热部署插件运行项目,提高开发效率. 具体步骤 idea版本是2019.3 一.开启IDEA的自动编译(静态) 具体步骤:打开顶部工具栏 File -> Settings -> Build -> Compiler 然后勾选 Build project automatically . 二.开启IDEA的自动编译(动态) 具体步骤:同时按住 C

  • SpringBoot 在IDEA中实现热部署步骤详解(实用版)

    好的热部署让开发调试事半功倍,这样的"神技能"怎么能错过呢, 使用过IDEA的童鞋赶紧进来撸一把吧. 学习目标 快速学会在项目中使用热部署插件运行项目,提高开发效率. 具体步骤 一.开启IDEA的自动编译(静态) 具体步骤:打开顶部工具栏  File -> Settings -> Default Settings -> Build -> Compiler  然后勾选 Build project automatically . 二.开启IDEA的自动编译(动态)

  • springboot+idea热部署的实现方法(自动刷新)

    近来在使用idea做springboot的项目,但是发现每次修改之后我都需要重新将项目关闭再开启,这样比较繁琐,发现通过热部署的方式让我们可以一边修改我们的项目,然后在页面中直接通过刷新展示出来 spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtools的原理 深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第

  • SpringBoot在IDEA中实现热部署(JRebel实用版)

    JRebel简介: JRebel是与应用程序服务器集成的JVM Java代理,可使用现有的类加载器重新加载类.只有更改的类会重新编译并立即重新加载到正在运行的应用程序中,JRebel特别不依赖任何IDE或开发工具(除编译器外).但是,与您的IDE紧密集成仍然很不错.请记住:只要您用新文件覆盖旧类文件,JRebel就会重新加载您的更改并减少重新部署的时间. 顺便整理下步骤防止以后忘记: 在Java开发的过程选择一个适合自己的IDE是很重要的,每次修改代码都需要重新的编译.重启,如何解决这个问题?.

  • Springboot在IDEA热部署的配置方法

    1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- optional=true,依赖不会传递,该项目依赖devtools:之后依赖myboot项目的项目如果想要使用d

  • SpringBoot在IDEA中实现热部署的步骤

    IDEA版本:2020.3 具体步骤 一.开启IDEA的自动编译[静态] 1.File->Settings. 2.直接搜索Compiler,选择Build project automatically开启自动编译. 二.开启IDEA的自动编译[动态] 1.同时按住 Ctrl + Shift + Alt + / 然后进入Registry ,勾选自动编译并调整延时参数. compiler.automake.allow.when.app.running -> 自动编译 compile.document

  • springboot基于IDEA环境热加载与热部署教程

    目录 一.使用Jrebel插件 二.devtools实现热加载 1.1.引入devtools的maven依赖 1.2.设置IDEA 1.3.修改一下application.properties配置 1.4.LiveReload插件 1.5.最后测试一下 在实际的开发过程中,我们经常修改代码之后,手动的重启项目,手动刷新浏览器查看修改效果.那么有没有一种方式能够快速的.自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?肯定是有的,但是对于这个功能很多人对功能的叫法有争议,笔者查询了

  • 详解使用JRebel插件实现SpringBoot应用代码热加载

    前言 在实际的开发过程中,我们经常修改代码之后,手动的重启项目,查看修改效果.那么有没有一种方式能够快速的.自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?是有的,在我之前的文章里面给读者介绍了使用springboot-devtools实现热加载的方法.本文就给大家介绍另外一种方式:使用Jrebel插件完成修改代码及资源的自动更新功能. 但是对于这个功能很多人对功能的叫法有争议,笔者查询了维基百科.官方文档,没有得到合理的答案,也没有权威的定义,笔者知道的就有:热启动.热加载.

  • webpack中的热刷新与热加载的区别

    webpack非常的强大,合理的脚手架可以为我们的工作省去众多繁琐无意义的工作.其中热刷新.热加载相较于传统开发大大提高了开发节奏. 从脚手架发现热刷新.热加载的差异 相信大部分的vue开发者都是从vue-cli开始的,很多初学者欢快的跑着vue项目却不敢改随意改变vue-cli的配置(毕竟webpack确实很复杂,vue-cli也做了很多工作来优化初学者的体验). 相比之下react没有提供一个比较健壮的脚手架了(至少没有明显地被我找到,望赐教).据我知一个是yeoman的 generator

  • IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)

    第一步: 修改file->settings->compiler->build project automatically 第二步: 按ctrl+shift+a,搜索Registry双击进去,点击面板搜索running,勾选下面的值: 代码的热加载可以使用spring-boot-devtools,百度下就有很多,个人感觉不好用,修改代码需要重启项目,很烦,非常鸡肋,所以我不用,哈哈哈- 补充知识:idea实现修改html等springboot下static目录静态资源重新加载 对于前后端不

  • 基于webpack-hot-middleware热加载相关错误的解决方法

    错误1:找不到__webpack_hmr GET http://127.0.0.1/__webpack_hmr 404 (Not Found) 在webpack的entry配置添加引用路径'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=10000&reload=true',相关的参数最好不要省略,否则会出现无法自动刷新的问题. 处理脚本如下: // 准备webpack配置信息 let hotMiddlewareScrip

  • 基于Python实现配置热加载的方法详解

    目录 背景 如何实现 使用多进程实现配置热加载 使用signal信号量来实现热加载 采用multiprocessing.Event 来实现配置热加载 结语 背景 由于最近工作需求,需要在已有项目添加一个新功能,实现配置热加载的功能.所谓的配置热加载,也就是说当服务收到配置更新消息之后,我们不用重启服务就可以使用最新的配置去执行任务. 如何实现 下面我分别采用多进程.多线程.协程的方式去实现配置热加载. 使用多进程实现配置热加载 如果我们代码实现上使用多进程, 主进程1来更新配置并发送指令,任务的

  • SpringBoot用配置影响Bean加载@ConditionalOnProperty

    目录 故事背景 调试&解决 SpringBoot 是怎么做的 故事的最后 故事背景 故事发生在几个星期前,自动化平台代码开放给整个测试团队以后,越来越多的同事开始探索平台代码.为了保障自动化测试相关的数据和沉淀能不被污染,把数据库进行了隔离.终于有了2个数据库实例,一个给dev环境用,一个给test环境用.可是随着平台的发展,越来越多的中间件被引用了.所以需要隔离的东西就越来越多了,比如MQ,Redis等.成本越来越高,如果像数据库实例一样全部分开搞一套,那在当下全域降本增效的大潮下,也是困难重

  • classloader类加载器_基于java类的加载方式详解

    基础概念 Classloader 类加载器,用来加载 Java 类到 Java 虚拟机中.与普通程序不同的是.Java程序(class文件)并不是本地的可执行程序.当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader. JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,BootstrapClassLoader是用本地代码实现

  • JS中使用gulp实现压缩文件及浏览器热加载功能

    gulp类似于grunt,都是基于Node.js的前端构建工具.不过gulp压缩效率更高. 一.安装gulp 首先,你要安装过nodejs,如果没有安装过的同学请自行下载.  先再命令行里输入   npm install gulp -g   下载gulp 二.创建gulp项目 创建一个你需要项目文件夹,然后在根目录输入  npm init  (npm init命令会为你创建一个package.json文件,这个文件保存着这个项目相关信息.比如你用到的各种依赖) 三.使用npm install 安

  • 详解webpack2+node+react+babel实现热加载(hmr)

    前端工程化开发的一个重要标志就是热替换技术,它大大的提高开发效率,使我们专注于写代码,webpack2中的热替换相比较1更加简洁. 1. 先看效果 2.目录结构 3.项目目录结构文件描述 bin 执行文件 node_modules node包 public 静态资源文件 static 静态资源 dist 编译后文件 src 项目js文件 .bablrc babel配置文件 webpack.config.dev.js开发模式webpack配置 webpack.config.pro.js生产模式we

随机推荐