Spring ApplicationContext-资源泄漏:“上下文”从未关闭
在spring MVC应用程序中,我使用以下方法在服务类之一中初始化变量:
ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/userLibrary.xml");
service = context.getBean(UserLibrary.class);
UserLibrary是我在应用程序中使用的第三方工具。上面的代码为’context’变量生成警告。该警告如下所示:
Resource leak: 'context' is never closed
我不明白警告。由于该应用程序是Spring MVC应用程序,因此在运行该应用程序时,我无法真正关闭/销毁该上下文,因为我引用该服务。警告到底想告诉我什么?
回答:
由于应用程序上下文是一个ResourceLoader
(即I
/
O操作),因此它消耗了某些时候需要释放的资源。这也是一个扩展AbstractApplicationContext
,它实现Closable
。因此,它有一种close()
方法,可以在try-
with-
resources语句中使用。
try (ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/userLibrary.xml")) { service = context.getBean(UserLibrary.class);
}
是否真的需要创建此上下文是一个不同的问题(您已链接到它),我不会对此发表评论。
确实,在停止应用程序时隐式关闭了上下文,但这还不够好。Eclipse是正确的,您需要采取措施在其他情况下手动将其关闭,以避免类加载器泄漏。
以上是 Spring ApplicationContext-资源泄漏:“上下文”从未关闭 的全部内容, 来源链接: utcz.com/qa/402130.html