什么可能是在现实世界的应用程序中使用destroy方法的示例?为什么正在运行的应用程序想要销毁它的bean?如果bean是由用于Web应用程序的spring容器创建的,例如ContextLoaderListener,那么如何重新创建这些bean,因为容器已经启动.有没有办法重新启动弹簧IoC容器而无需重新启动应用程序服务器?
解决方法:
一个例子是DataSource或需要清理的任何资源.你可能会有这样的事情:
@Bean(destroyMethod = "close")
DataSource dataSource() {
....
}
这在具有多个类加载器的环境中尤其重要,例如应用程序服务器以防止内存泄漏.
有时候这样做是多余的,因为底层资源可以自己进行清理(比如作为servlet生命周期中contextDestroyed事件的一部分),但是你应该总是验证这一点.
这些弹簧docs也是一个有用的参考.引用的例子类似:
<bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup"/>
那么bean类:
public class ExampleBean {
public void cleanup() {
// do some destruction work (like releasing pooled connections)
}
}
可以刷新上下文.这个answer提供了一个很好的解释,当你可能想要这样做.
标签:java,spring,servlets 来源: https://codeday.me/bug/20190829/1758756.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。