1.Eclipse/Java热部署
Eclipse或者说Java,本身就支持热部署,但是功能很弱。
简单的修改文案
system.out.println("abc");
修改为
system.out.println("abcd");不用重启就能生效。
但是,如果增加1个方法
public void test(){
system.out.println("abcd");
}
没能生效。
(本人本地亲测)
2.热部署
JFinal框架,一直在升级,听说已经搞定了热部署。
在很久以前,Java 热部署就非常火,后来降温,也没深入学习和使用。
最近学习SpringBoot等各种新知识,偶然遇到了,就再研究下。
凡是有利于提高开发效率的,都值得学习实践。
3.最近,在搭建自己的技术平台时,学习了一网友的文章
https://www.cnblogs.com/jaycekon/p/SpringBootDubbo.html
他的pom配置有这么一段
org.springframework springloaded 1.2.3.RELEASE
没用过,就百度学习使用了下。
(凡是遇到不懂的,顺手就百度,了解一下。工作时间越久,知道的就越来越多。)
配置以上依赖之后,Eclipse运行,Run Configuration,JVM参数增加1项配置:
-javaagent:D:\MavenRepos\org\springframework\springloaded\1.2.7.RELEASE\springloaded-1.2.7.RELEASE.jar -noverify
就生效了。
4. 怎么看出 spring-loaded生效了呢?
Eclipse,Idea或者说Java JVM,本来就一定程度上支持了“热部署”。
经常在调试的时候,修改文案,就生效了。
我是有这个疑惑的,在阅读这篇文章的时候,发现也有个网友有疑惑。
https://blog.csdn.net/tang86100/article/details/78772079#commentsedit
正好看到1个
测试代码
@RequestMapping(value = "/detail")
public Result detail(@RequestParam Integer id){
//查询有效的
JtnPost post=postManager.getDetailById(id);
Result result = Result.ok().setBody(post);
System.out.println(id);
//test();
return result;
}
private void test(){
System.out.println("test");
}
用了Spring-Loaded,来回注释 取消注释 test()实时生效,而Eclipse不行。
5.Spring-Loaded 热部署局限性
@RequestMapping(value = "/detail2")
public Result detail(@RequestParam Integer id){
//查询有效的
JtnPost post=postManager.getDetailById(id);
Result result = Result.ok().setBody(post);
System.out.println(id);
//test();
return result;
}
运行过程中,url改为detail2,没有生效。
网友的观点,尚未验证:
1. 注解及其参数修改,如RequestMapping(value=”/xxx”)等;
2. 新增jar包;
3. 以及其他尚未考证的地方;
本工具适用以下情况:
1. Java主体代码修改、调整;
2. 非配置项bug修复;
3. 上线期间代码快速联调;
6.热部署的原理?为啥有局限性?
本人分析:简单的热部署,只能实时监测源文件变化,同步翻译为class文件,再重新加载。
但是,修改RequestMapping这种,这种功能比较复杂,会有很复杂的生效过程,了解Spring的应该能理解。
热部署,我的理解是 实时部署,局部部署。
如果变化较大,需要更换的jar等就太多了,不容易做到,所以没支持。
因此,小改用 热部署,大改重启。
参考资料:
https://www.cnblogs.com/jaycekon/p/SpringBootDubbo.html
https://blog.csdn.net/tang86100/article/details/78772079#commentsedit
https://blog.csdn.net/myb0220/article/details/50462312
https://zxmsammy.iteye.com/blog/2344163