我们有一个 Spring 应用程序托管在共享tomcat实例.
有时我们必须重新加载 Spring 应用程序上下文,但又不想重新启动 Tomcat 服务器,因为其他应用程序也托管在那里。
正在通过以下方式刷新 spring 应用程序上下文
((ConfigurableApplicationContext)applicationContext).refresh();
经过考虑的不好的做法?
我还有哪些选择?
可能出现的几个问题——
首先,刷新()should销毁当前存在于上下文中的所有bean(单例等)并重新创建它们,因此任何可能发生的引导都会再次发生(您放入的内容InitializingBean
豆类等)。这对您来说更是一个问题,以确保您编写的所有初始化代码都可以安全地再次执行。
另一件需要注意的事情是刷新将如何影响永久内存生成 (permgen)。由于 spring 可以(并且将会)代理类并创建动态运行时类,这可能被证明是资源泄漏,因为 bean 工厂在刷新上下文时可能会创建新的运行时类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)