1. 程式人生 > >BeanFactory not initialized or already closed - call 'refresh' before accessing beans解決辦法

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

nco spring實例 org tro all 指定 ctr bsp close

今天在寫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");

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

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