Spring applicationContext爆出警告「Resource leak: 'applicationContext' is never closed」

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);app

此處applicationContext會有警告出現,根據警告的英文意思翻譯成中文就是「applicationContext沒有關閉」,和Scanner,DB,IO相似,用完即關,因此咱們要把applicationContext關閉。而applicationContext沒有直接提供關閉的方法,在它的子類「ConfigurableApplicationContext」中,則提供了close()方法,因而能夠用((ConfigurableApplicationContext)applicationContext).close();spa

警告則再也不出現。翻譯

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

或者既然都要獲取bean,要去new「ClassPathXmlApplicationContext」了,那何不把「ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);」整句修改了,把ApplicationContext直接替換成ClassPathXmlApplicationContext,更爲直接明瞭呢,因而能夠修改爲以下:生命週期

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);get

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

 

能夠了解Spring的生命週期以便更清晰的瞭解方法

相關文章
相關標籤/搜索