試了下不錯,不像JRebel那樣收費,這個開源的,感覺很好用。
首先下載springloaded.jar
https://github.com/spring-projects/spring-loaded
也可以使用maven拉取:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.7.RELEASE</version>
</dependency>
普通jdk應用
java -javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify SomeJavaClass
只要修改class文件,立即生效,SomeJavaClass修改無效。
tomcat配置
關閉tomcat的reloadable
修改server.xml。
<Context reloadable="false"
如果希望eclipse中所有的工程都默認爲reloadable爲false,那麼如下配置:
在Servers視圖(默認在下面的窗口中),雙擊你的服務器;
將"Server options"配置項中的"Modules auto reload by default"取消選中,關閉保存。
修改啓動配置增加代理
如果是純tomcat中配置,修改啓動腳本catalina.bat(linux中爲catalina.sh):
#windows
#set JAVA_OPTS=-javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify
#linux
export JAVA_OPTS="-javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify"
只要修改class文件,立即生效。
Eclipse
修改server配置
修改eclipse的Servers模塊中的server.xml文件。
<Context reloadable="false"
修改啓動腳本
在eclipse中,第一次啓動運行之後,修改“Run Configurations”,在啓動腳本的”Arguments” 選項卡,在“VM arguments”文本框中增加:
-javaagent:/Users/pollyduan/springloaded-1.2.7.RELEASE.jar -noverify
使用修改後的啓動腳本,重新啓動,既可實現修改後自動加載了。
控制檯不會顯示任何信息。
非Spring項目的說明
可以使用熱加載功能,但是會提示:
Reloading: JVMPlugin: warning: unable to clear BEANINFO_CACHE, cant find field
忽略即可。如果加入spring容器的依賴和配置,就不會出現了。