1.項目地址 https://github.com/spring-projects/spring-loaded
2.介紹 Spring Loaded is a JVM agent for reloading class file changes whilst a JVM is running. It transforms classes at loadtime to make them amenable to later reloading. Unlike 'hot code replace' which only allows simple changes once a JVM is running (e.g. changes to method bodies), Spring Loaded allows you to 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.
3.小試牛刀
1.下載spring-loaded: http://repo.spring.io/simple/libs-release-local/org/springframework/springloaded/1.2.3.RELEASE/springloaded-1.2.3.RELEASE.jar
2.代碼示例(eclipse運行)package com.mavsplus.example.springloaded;
import java.util.concurrent.TimeUnit;
/**
* <a href="https://github.com/spring-projects/spring-loaded"></a>
*
* @author landon
* @since 1.8.0_25
*/
public class SpringLoadedExample {
public static void main(String[] args) throws Exception{
Reload reload = new Reload();
while (true) {
reload.load();
TimeUnit.SECONDS.sleep(3);
}
}
public static class Reload {
public void load() {
System.out.println("load!");
}
}
}
3.運行配置VM arguments
PS:Maven工程,springloaded-1.2.3.RELEASE.jar放在了src/main/resources目錄 4.運行: 程序每隔3s輸出load 5.直接修改load方法的輸出,輸出reload,直接保存即可,神奇的事情出現,我們在未重啟application的情況下,進行了代碼的reload 
4.后續會結合源代碼以及更深層次的例子進行剖析
posted on 2015-06-19 14:35
landon 閱讀(5378)
評論(3) 編輯 收藏 所屬分類:
JVM 、
HotSwap