今天在用spring寫登錄頁面的時候tomcat無法正常啓動,查看日誌,發現了錯誤:Exception in thread "main" java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext,意思是BeanFactory未初始化或已關閉。
在網上查找很久,有如下幾種解決方法:
(1)錯誤寫法:ApplicationContext ctx = new ClassPathXmlApplicationContext();
時,沒有指定配置文件,Spring實例化BeanFactory的時候是默認到classPath下面查找名爲applicationContext.xml的文件的,但是呢,你又沒有指定,所以出現了這個錯誤。
修改爲:ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
(2)spring初始化bean對象出錯;
1)xml的bean的id 有重複;
2)如果是註解配置:可能是註解的名稱有重複,只需要將重複的bean 的id和重複的註解改了就行了;
試了這兩種方式都沒有解決問題,因爲我是用註解寫的,所以我考慮到可能是有的xml文件沒有加載進來,通過對代碼的查看,發現在主xml文件中使用的import標籤出現了問題,沒有成功引入xml文件,接着把地址刪掉,寫上絕對路徑問題就解決了。