使Spring注册@Controller动态,无需重新启动应用程序服务器

问题描述 投票:1回答:1

我的应用程序使用Engine-application,Engine。这个引擎允许从我的项目重新加载java类而不停止应用程序服务器(Tomcat),即,当我有一个新版本的项目时,我部署它并“调用”引擎来重新加载我的代码。

引擎在DispatcherServlet有一个注册的web.xml(Spring),它映射在/rest/*上。由于Engine允许在不停止应用服务器的情况下重新加载java代码,理论上我可以创建一个@Controller类,Engine会看到它。但DispatcherServlet不会,因为它已经在应用程序服务器运行时初始化了一次。因此,我需要以某种方式使用一组新的@Controller-s重新初始化DispatcherServlet。

我怎样才能做到这一点?

java spring
1个回答
1
投票

由于@Controller可能存在其他依赖关系(例如其他bean,属性等),因此重新加载可能不是一项简单的任务。你可以尝试使用JRebel which has Spring integration。很久以前有Spring OSGI项目,但它不再维护,看起来像Pivotal放弃了OSGI。

我总是发现这些技术不值得花时间,Tomcat中的热插拔代码总会导致某种泄漏或不可预测的行为。如果我在你的鞋子里,我会优化应用程序启动时间而忘记热交换复杂的Spring bean。

© www.soinside.com 2019 - 2024. All rights reserved.