【java】Idea中Tomcat热部署
无论是java代码,jsp代码等动态资源文件,还是html,模板文件等静态文件,如果不能够热部署到Tomcat中,都必须要重启整个springmvc项目,启动的代价往往是需要等待很久,因此,可以看到很多博客介绍如何进行热部署的。
今天,笔者不想重复之前的工作,主要说一下当采用大部分博客的操作后,您的更改仍然没有生效的原因,这里主要有如下几点:
- 修改配置文件,更改无法生效;
- 没有采用Debug方式运行,更改无法生效;
- 没有执行刷新,更改无法生效;
- 修改静态资源,而没有禁用缓存,更改无法生效。
1.修改配置文件更改无效
如果更改的是配置文件,那么请一定重新Debug该项目。因为配置文件的载入大多采用单例模式的方式,如下图所示,systemSetting对象在最开始的时候加载,之后再没有对其进行更改操作,所以,无论您是如何刷新,那么结果还是更改之前的值。
2. 未进入Debug更改无法生效
热部署需要reload class,设置为Always,但是笔者觉得,之所以HotSwap选项出现在Debugger选项之下,可能就代表了只有在Debug模式下,热部署才会生效。
怎么证明呢?
有关于HotSwap的更多知识,请移步:JVM之热部署hotswap
3. 未执行刷新更改无法生效
很多博客都提到设置自动更新,即当代码改变的时候,需要IDEA为你自动更新更改过的资源:
如何手动更新更改的内容呢?只需要点击idea左下角的灰色刷新按钮即可。为什么有了自动更新还需要手动更新,主要是笔者个人觉得自动更新具有不太可控性,我保存了一下,那idea到底是帮我更新了没有?就像java垃圾回收一样,我们不要太依赖于编译器。
4. 修改静态资源而未禁用缓存更改无法生效
因为浏览器会自动缓存内容,所以,这里,我们需要在浏览器端,按F12打开调试界面,接着刷新页面即可。
最后,以上只是笔者的一些心得,欢迎大家留言区评论,谢谢大家的支持。