在玩 JRebel 的时候发现了 Spring Loaded,相比JRebel来说,Spring Loaded最大的优势就是免费。
而且其挂在spring-projects下面,也算是有个强大的后盾。
实际上在Debug模式下,Java是支持部分的热部署能力的,但只限于修改方法体,如果新增的方法或者删除了方法就无能为力了。
Spring Loaded 可以解决上面的问题,新增、删除、修改 (方法|构造函数|变量|枚举),都可以实现热部署。美中不足是无法实现对配置的热部署。
使用方法也很简单 直接在启动时加上以下JVM参数即可。
1 | -javaagent:{path}/springloaded-{VERSION}.jar -noverify |
springloaded 仓库地址:http://repo.spring.io/release/org/springframework/springloaded/
当前最新版本是springloaded-1.2.6.RELEASE.jar,点击下载即可。
spring-loaded github: https://github.com/spring-projects/spring-loaded
扫描范围
Spring Loaded默认对 Jar包 和 以下包中的类变化不进行扫描1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18antlr/
org/springsource/loaded/
com/springsource/tcserver/
com/springsource/insight/
groovy/
groovyjarjarantlr/
groovyjarjarasm/
grails/
java/
javassist/
org/codehaus/groovy/
org/apache/
org/springframework/
org/hibernate/
org/hsqldb/
org/aspectj/
org/xml/
org/h2/
spring-loaded Wiki: https://github.com/spring-projects/spring-loaded/wiki/Basic-usage-information
其他参数
1 | -Dspringloaded=verbose |
verbose
- Spring Loaded 会详细的打印出 后台处理器都干了些什么,哪些文件发生了变化等。
1 | -Dspringloaded=explain |
explain
- Spring Loaded 会解释为什么会做某些决定,例如会告诉你为什么你的类不能为loaded,可能是因为写在了org.springframework
包下面 等。
详见官网 WiKi :
Configuration-Options Wiki: https://github.com/spring-projects/spring-loaded/wiki/Configuration-Options
1 -Dspringloaded=verbose;explain;profile=grails