IDEA下利用Jrebel插件实现JFinal项目main方法【热加载】

第一步:下载jrebel插件,这个是必须的,步骤如下

downloadJrebel.png

我这里已经下载了,如果没有下载,就选择下载,下载有点慢,慢慢等待就好,需要离线插件包可以 @suxiaoqiuking

下载完成后重启,然后激活,

image.png

进入激活页面

image.png

也可以选择我的方式,去官网注册获取激活code

具体激活参考这个帖子 IntelliJ IDEA / JRebel 激活;

jrebel相关设置

file>setting>jrebel, 类资源刷新间隔设置

image.png

file>setting>jrebel>Startup,默认即可

image.png

第二步:进入正题,相应的设置,见图流程走下去

使用快捷键ctrl+alt+shift+/ -->registry

image.png

image.png

到这里离热启动又近一步了

打开设置,打开自动编译

image.png

JRebel项目或者模块选择热部署页面

image.png

需要部署的项目勾选

image.png

最后一步

image.png

image.png


对比

修改前

image.png

image.png

修改后

image.png

image.png


到这里就可以节约n多时间;

ps:在club中测试:修改路由不能更新,新加action注册不了,这个问题有点大

但是通过在服务层创建的新方法,可以在控制层通过静态单例调用方法

springboot启动可以注册路由,也可以调用 service层方法,亲测



评论区

JFinal

2017-12-19 20:53

非常非常详细的高质量分享,填补了 jfinal 在 IDEA 上热加载的一项空白,已点赞收藏,以后有人问到这个问题,直接给 url 就可以了,感谢分享 ^_^

EATI001

2017-12-20 09:48

我来吹两句,你的这个情况其实装不装jrebel直接用idea自带的,1、上图打开自动编译2、配置下tomcat部署on update action 为redeploy与on frame deactivation 为 update classes and resource后,就可能实现你上面举例修改的代码效果,当前JFinal面临的问题在于不能实现自动加载的是,比如1、在controller上添加新action、2、在服务层新创建的方法,在控制层通过静态单例调用方法、3、注册新的路由,4、是类级别上的热加载等问题。

suxiaoqiuking

2017-12-20 12:06

@EATI001 这个帖子jfinal 项目中现在能实现就是你提出的2和代码更新的实现, 1、3这个我试了下确实不行;我这个主要是在SpringBoot中,亲测路由注册是没有问题的,但是jfinal这个我昨天没有测过^_^,但是目前对于我来说 在jfinal main启动目前这样是满足我的,这个问题待解决

suxiaoqiuking

2017-12-20 12:09

@EATI001 你提得这个问题很好 , 后面看看有什么方式去实现吧

suxiaoqiuking

2017-12-20 12:10

@EATI001 在springboot项目中 通过过Aplication启动 , 都能解决你提的4个问题

suxiaoqiuking

2017-12-20 13:05

@JFinal 分享是一种美德^_^

JFinal

2017-12-20 16:02

@suxiaoqiuking 这个分享太有用了,感谢分享 ^_^

EATI001

2017-12-20 16:30

@Jfinal ^_^^_^!!波总你还这是老老实实的把JFinal在eclipse和idea上的自动热加载部署问题给全面解决掉的,不然目前JFinal在受限于指定版本的ide了,比如只在eclipse 4.2.5版本以下支持,现在新版本的eclipse 如4.6或4.7用目前的方式配置自动热加载部署也就不生效了,其次就是idea上,更不用说了,如果这个问题没解决,JFinal应在这点上被拖后腿了,不然极速有损。

suxiaoqiuking

2017-12-20 16:52

JFinal

2017-12-20 17:34

@EATI001 后续一定会解决,已经有三个方案了,jfinal 从未停止对于极速、极简的追求

EATI001

2017-12-20 17:51

EATI001

2017-12-20 17:53

@JFinal另外对带参数action问题,搞个全版本通用的呢,这样在jdk8以下的版本也支持,这样就不用再开个jdk8版本的分支了.^_^^_^^_^!!!

l745230

2017-12-22 09:18

请教下,只用jrebel的方式,分模块开发的情况下,调用jar中的代码,能实现热加载,而不是每次代码修改完都需要clean install吗?

suxiaoqiuking

2017-12-22 10:56

@l745230 亲测可以在【环境springboot】中实现热加载,不需要重启,不用clean install,在什么环境你需要自己测试

海哥

2017-12-22 16:01

可以用在jboot下吗?

suxiaoqiuking

2017-12-22 17:07

@海哥 我还没用测,测好了回复你

suxiaoqiuking

2017-12-22 17:34

@海哥 海哥,我简单的测了一下,路由注册后类是加载了。但是路由注册不上(已经定义好的路由内代码的改动可以即时生效),但是在springboot中路由可以注册,这个有点迷惑 ,如果路由改动不大的话这个也是个比较节省时间的插件,毕竟我们在service写代码的时间多一点^_^;service层的调用和方法增加删除修改都可以

suxiaoqiuking

2017-12-22 17:35

@海哥 配置文件修改加载没有测,等我有时间再测下这些细节的功能

ddjfinal

2017-12-27 14:39

@JFinal 我用的是tomcat开发调试,也安装的是jrebel,一般我的做法是,先把controller和service方法体写出来,然后注册路由,启动项目,然后再实现具体的细节,代码都是实时热更新的,service和controller先实现通用的接口,比如有增删改查的功能,index,add,edit,update,save,details,list,等这些方法基本是通用的,所以写了接口,实现接口,然后启动项目后实现细节,省时省力。另外,jdk使用1.7以上版本,Java本身已经支持热加载了,只要不修改方法名,类名,方法参数个数和类型,是不需要重启容器的。

ddjfinal

2017-12-27 14:44

@ddjfinal 另外,我一直在用idea,最近项目在用jfinal做,jfinal在启动速度上也远比springmvc要快速的多,支持波总,另外说句,enjoy真心好用,freemarker让我彻底的给替换掉了!

wendell620

2018-02-05 10:01

非常感谢,省下很多时间来。

昵称而已

2018-06-01 18:13

前端页面还是不能热部署

JFinal

2018-06-03 21:53

@昵称而已 如果你使用的是 jfinal enjoy 引擎,热部署只需要配置一下:
engine.setDevMode(true)

steven_lhcb_9527

2020-11-05 14:54

帖主,我按照你的步骤,修改代码提示jrebel重新加载了类,但是接口的响应没变。

suxiaoqiuking

2020-11-07 17:25

@steven_lhcb_9527 能描述具体点吗

热门分享

扫码入社