今天在寫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");
這樣的話就不會出現這樣的錯誤了。