使用spring-loaded实现java web的热部署

做过java web的同学应该都知道jvm 的hotswap。例如你在使用tomcat作为web容器的时候,在debug模式下启动tomcat,你这个时候修改java代码,会立即生效。但是,这个“修改”是有条件限制的:就是你只能够修改方法体中的内容。这就苦了我们的工程师,如果修改方法名,修改方法参数类型、数量,新增变量、方法,这些都是不可以奏效的。这时,eclipse会弹出一个窗口提示。

这里写图片描述

这个时候如果点击continue的话,你的修改不会起到任何作用,代码实际上执行的还是之前的逻辑。如果想要你修改的代码生效就只能重启服务,但是重启服务是需要花时间的。怎样才能不重启服务器也可以及时运行我们修改的代码呢?
经过一番查找,找到JRebel这个东西,据说非常强大,但可惜的是JRebel是收费的,而且还不便宜呢,$365/年。那有没有免费开源的,同样可以实现我们热部署?有的,就在github上面:https://github.com/spring-projects/spring-loaded

下面就介绍一下如何利用spring-loaded实现热部署。

STEP1:
首先需要得到spring-loaded的jar包,github上面有链接,这里我使用springloaded-1.2.5.RELEASE.jar,将它放到本地c:/springloaded-1.2.5.RELEASE.jar。

STEP2:
Window -> Preferences -> Java -> Installed JREs
这里写图片描述
然后Edit Installed JREs, Default VM arguments 添加参数:
-javaagent:c:/springloaded-1.2.5.RELEASE.jar –noverify
至此spring-loaded的配置完成了,即使在tomcat非debug模式下也可以实现官方所说的:

add/modify/delete methods/fields/constructors. The annotations on types/methods/fields/constructors can also be modified and it is possible to add/remove/change values in enum types.

但是对于第三方像是Spring注解这些的修改,spring-loaded就无能为力了,必须求助于前面所说的收费的JRebel了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值