1. 程式人生 > >Spring ApplicationContext - Resource leak: 'context' is never closed

Spring ApplicationContext - Resource leak: 'context' is never closed

編譯環境:Eclipse

問題:在spring MVC應用程式中,我使用以下方法初始化其中一個服務類中的變數

ApplicationContext context=new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj=(HelloWorld) context.getBean("helloWorld");
obj.getMessage();

上面的程式碼中第一行程式碼'context'變數生成警告。警告如下所示:

Resource leak: 'context' is never closed

解決方法:由於ApplicationContext具有ClassPathXmlApplicationContext的例項,因此具有close()方法。我們只需要丟擲context物件並呼叫close()方法,如下所示。

((ClassPathXmlApplicationContext) context).close();

另外,如果ApplicationContext使用的是AbstractApplicationContext例項,則需要丟擲該型別的context物件並呼叫close()方法。

import org.springframework.context.support.AbstractApplicationContext;
    ...
    ...
    ...
    ...
((AbstractApplicationContext) context).close();