BeanFactory not initialized or already closed - call 'refresh' before accessing beans解決辦法


今天在寫Spring程序時遇到了一個很常見的錯誤,而我以前好像一直沒碰到過,今天才見到這個錯誤,經過研究解決了這個錯誤,犯這個錯誤真是不應該啊。

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
    at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1097)
    at com.pb.demo.Test.main(Test.java:12)

 

BeanFactory沒有實例化或者已經關閉了,其實產生錯誤的原因很簡單,在寫:

ApplicationContext ctx = new ClassPathXmlApplicationContext();

時,沒有指定配置文件,Spring實例化BeanFactory的時候是默認到classPath下面查找名為applicationContext.xml的文件的,但是呢,你又沒有指定,所以出現了這個錯誤。

這就是錯誤的原因,在括號寫上配置文件名就行了。

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

這樣的話就不會出現這樣的錯誤了。


免責聲明!

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



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