我们在控制器类中做出的变化很少得到动态反映而无需重新部署?

时间:2017-02-07 17:57:56

标签: java spring tomcat

我尝试通过谷歌搜索来理解这一点,但没有遇到任何令人满意的事情。

我可以通过一个简单的例子来描述我的狩猎对象。我有一个简单的Spring MVC应用程序部署到我的Tomcat服务器,它只有一个控制器类 仅对控制器类中的当前方法进行> cat /proc/sys/kernel/core_pattern |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e 注释。现在,我添加了另一个@RequestMapping注释,但是在类级别,显然会更改URL以访问与控制器类方法的@requestMapping相关的URL模式。

现在,我不需要重新启动服务器以测试资源不再具有相同的URL模式。

我目前的理解是,当我们将应用程序部署到本地服务器时,该war文件将用于运行该应用程序。那么,为什么我们在控制器类中所做的更改会动态更新,我们可以在不重新启动服务器的情况下对其进行测试,并使用最新的更改重新部署新的war文件。

另外,我已经给出了这个特殊情况,因为我只是偶然发现它。

1 个答案:

答案 0 :(得分:2)

通常情况下,如果你改变了代码而不改变类的形状/接口可以通过热代码替换来处理(我想这就是你所说的 - 调试)

@Annotations是静态加载的,在运行时无法更改。

您可以使用一些很酷的类加载器(如JRebel或Spring-Loader)来提高此功能。当您使用spring-boot时,开发工具会在您更改同样非常酷的内容时重新加载Web上下文