spring-boot 整合hotswap-classloader

hotswap-classloader

1.1.hotswap-classloader简介

hotswap-classloader参考jfinal-undertow的hotswap设计开发

https://gitee.com/jfinal/jfinal-undertow/tree/master/src/main/java/com/jfinal/server/undertow/hotswap

主要功能

实现spring-boot快速速热加载,测试热加载在0.8s左右

简介

spring-boot开发者福音,修改java文件后按Ctrl+S可在1s内生效,省去手动重启spring-boot的时间


1.2.和spring-boot整合

添加依赖

<dependency>
  <groupId>com.litongjava</groupId>
  <artifactId>hotswap-classloader</artifactId>
  <version>1.0</version>
</dependency>

修改启动类

使用

SpringApplicationWrapper.run(Application.class, args, true);

修改后如下

package com.litongjava.spring.boot.v216;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.litongjava.hotswap.wrapper.spring.boot.SpringApplicationWrapper;

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    //SpringApplication.run(Application.class, args);
    SpringApplicationWrapper.run(Application.class, args, true);
  }
}


完成

1.3.idea支持

目前对idea支持还有问题

HotsWapWatcher 是通过监听 target/classes 下面的 class 文件被修改时触发的热加载

而 idea在开发的过程中是不会自动编译的,造成 target/classes 下面的文件没有变化,

解决办法有两种

第一种:通过快捷键 Ctrl + F9 触发编译,在IntelliJ IDEA 2019.3.3 (Ultimate Edition)测试失败

第一种:可以让 IDEA 像 eclipse 一样开启自动编译,IntelliJ IDEA 2019.3.3 (Ultimate Edition)配置方法如下

第一步:

File-->Settings-->Compiler-->勾选Build project automaitcally

第二步:

安装快捷键Ctrl+Shift+A-->输入Registry并进入-->勾线compiler.automake.allow.when.app.running

第三步:

取消idea自动保存代码

File --> Settings--> Appearance & Behavior --> System Settings -->

 Save files on frame deactivation 取消勾选

Synchronize files on frame or editor tab activation 取消勾选 

然后点击 Apply生效


显示modified标记,修改文件会在代码编辑窗口的tab区域的文件名上显示*标记

File --> Settings --> Editor --> General --> Editor Tabs --> Mark modified(*) 勾选 --> Apply

测试修改java文件保存后会重启,但是修改的java文件不会生效


开源地址

https://gitee.com/litongjava_admin/hotswap-classloader

评论区

chcode

2021-06-23 18:18

prelove

2021-06-24 13:35

idea下面是个老问题很尴尬

冰雨

2021-06-25 10:21

IDEA修改类不实时编译的问题挺不爽的

Max_Qiu

2021-06-25 11:54

老铁666

李通

2021-06-25 22:30

感觉好用,start一下呗