Spring applicationContext爆出警告“Resource leak: 'applicationContext' is never closed”


ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);

此處applicationContext會有警告出現,根據警告的英文意思翻譯成中文就是“applicationContext沒有關閉”,和Scanner,DB,IO類似,用完即關,所以我們要把applicationContext關閉。而applicationContext沒有直接提供關閉的方法,在它的子類“ConfigurableApplicationContext”中,則提供了close()方法,於是可以用((ConfigurableApplicationContext)applicationContext).close();

警告則不再出現。

當然,比較裝逼的寫法也有:applicationContext.getClass().getMethod("close").invoke(applicationContext);

或者既然都要獲取bean,要去new“ClassPathXmlApplicationContext”了,那何不把“ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);”整句修改了,把ApplicationContext直接替換成ClassPathXmlApplicationContext,更為直接明了呢,於是可以修改成如下:

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);

applicationContext.close();                // 注:好像Spring高版本不可以如此使用

 

可以了解Spring的生命周期以便更清晰的了解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM