为什么?
由于恶劣的历史原因 - springcontext启动需要2-3分钟,这意味着如果你只想进行一次测试,那就是2-3分钟的等待时间。如果你是一个TDD人,想要写一点,跑,写一点,跑 - 它是不可行的。加快springcontext加载显然是理想的,但超出了我的时间,因为它一团糟 - 我想的只是做一个无限循环的junit测试:
while true
try {run the actual test;show success} catch {show error}
wait until code is hot swapped
这样,很多时候,有人可以只写一些代码,按下构建键 - 它会立即再次运行而不重新加载上下文 - 延迟2-3分钟到不到一秒钟。
答案 0 :(得分:0)
查看HotswapAgent,Java无限运行时类和资源重新定义。
下载dcevm和最新hotswap-agent-core.jar,然后使用java --javaagent:c:\java\hotswap-agent-core.jar YourApp
运行您的应用。
添加HotswapAgent依赖项:
<dependency>
<groupId>org.hotswapagent</groupId>
<artifactId>hotswap-agent-core</artifactId>
<version>1.3.0</version>
<scope>provided</scope>
</dependency>
您还需要Hotswap Agent插件来重新加载Spring和其他bean /缓存:
<dependency>
<groupId>org.hotswapagent</groupId>
<artifactId>hotswap-agent-plugins</artifactId>
<version>1.3.0</version>
<type>pom</type>
</dependency>
编写您的插件类:
@Plugin(name = "TriggerHotswapPlugin")
public class TriggerHotswapPlugin {
@OnClassLoadEvent(classNameRegexp = ".*", events = LoadEvent.REDEFINE)
public static void onAnyReload() {
.. synchronization mechanism with your class .. ;
}
@OnResourceFileEvent(path = "/", filter = ".*.resource")
public void onResourceChanged() {
.. synchronization mechanism with your class .. ;
}
}
创建hotswap-agent.properties
pluginPackages=your.plugin.package
作为替代方案,您可以创建简单的javaagent来触发hotswap,但是无论如何都需要java classess的完全热交换,为什么不编写自定义hotswap代理插件。