Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call
如题,spring如果遇到
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call ‘refresh’ before accessing beans via the ApplicationContext
这个问题的话,不要慌
这个错误信息说明的是BeanFactory 没有初始化或者已经关闭了,以后在遇到这样的问题的话,大家应该毫不犹豫的想到是配置文件的问题
我先把解决的方法直接写出来,然后后面做详细的方法解析,因为有的老哥懒得看解析,他只是过来找答案,找解决方法。 如下:
你只需在你的web.xml中配置下面这样一段代码即可。
<!--配置读取spring文件的路径--> <context-param> <param-name>contextConfigLocation</param-name> //这里的applicationConText.xml是你spring配置文件的名字 <param-value>classpath:applicationConText.xml</param-value> </context-param>
接下来是解析
那我们把错误信息往上翻,看看配置文件到底什么问题,这时你会发现
这里的意思是,他在创建spring工厂的时候要读取配置文件,他读取的这个配置文件没找到,他去哪里找了呢?他去 [/WEB-INF/applicationContext.xml] 这里找了,但是我们并没有把配置文件放到这里,我们放的位置应该是:
*应该是这个位置。
那我们往他的底层戳一戳,看下他的源码*
在这里,我们可以清楚的看到,它读取配置文件的默认位置是
[/WEB-INF/applicationContext.xml]
他的参数呢是这个:“contextConfigLocation” ,所以我们要去配置一下这个,他的参数是context-param(即上下文参数),可以在WEB-INF下直接配置的,那我们就去配置一下
所以此时有两个解决方案
第一个:在WEB-INF下重新配置读取spring文件的路径
添加这段代码即可
<!--配置读取spring文件的路径--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationConText.xml</param-value> </context-param>
有的朋友在这里可能会迷惑,为什么这里路径要用classpath呢?这个applicationConText.xml不是在resources下么? 其实是因为我们的java程序最终打成jar包的时候,.class文件和配置文件都放到了classes中,所以要指向这个位置。
给大家教一个小技巧,以后遇到配置的属性,或者方法的后缀是Location或Locations的,那么全部都应该在classpath下,一般都是放到classpath下。
ok,配置完成之后,重新启动就可以了
如果有什么问题,欢迎留言探讨。感谢免费评分…
- spring注解过程中java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 're
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- 解决java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext问题
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the A
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- spring整合jax-ws时报错(java.lang.IllegalStateException: BeanFactory not initialized or already closed)
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- 配置文件加载异常java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refre
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' bef
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo
- 问题BeanFactory not initialized or already closed - call 'refresh' before access
- java.lang.IllegalStateException: BeanFactory not initialized or already closed
- java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh
- tomcat过一段时间就报spring的错:BeanFactory not initialized or already closed - call 'refr
- java.lang.IllegalStateException: BeanFactory not initialized or already closed
- spring配置出错: BeanFactory not initialized or already closed - call 'refresh' before accessing beans vi