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
这个问题的话,不要慌
Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call_第1张图片
这个错误信息说明的是BeanFactory 没有初始化或者已经关闭了,以后在遇到这样的问题的话,大家应该毫不犹豫的想到是配置文件的问题

我先把解决的方法直接写出来,然后后面做详细的方法解析,因为有的老哥懒得看解析,他只是过来找答案,找解决方法。 如下:
你只需在你的web.xml中配置下面这样一段代码即可。

 
    
        contextConfigLocation
        //这里的applicationConText.xml是你spring配置文件的名字
        classpath:applicationConText.xml
    

接下来是解析
那我们把错误信息往上翻,看看配置文件到底什么问题,这时你会发现
Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call_第2张图片
这里的意思是,他在创建spring工厂的时候要读取配置文件,他读取的这个配置文件没找到,他去哪里找了呢?他去 [/WEB-INF/applicationContext.xml] 这里找了,但是我们并没有把配置文件放到这里,我们放的位置应该是:
Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call_第3张图片
*应该是这个位置。

那我们往他的底层戳一戳,看下他的源码*
第一戳
第二戳
Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call_第4张图片
在这里,我们可以清楚的看到,它读取配置文件的默认位置是
[/WEB-INF/applicationContext.xml]

他的参数呢是这个:“contextConfigLocation” ,所以我们要去配置一下这个,他的参数是context-param(即上下文参数),可以在WEB-INF下直接配置的,那我们就去配置一下

所以此时有两个解决方案
第一个:在WEB-INF下重新配置读取spring文件的路径
Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call_第5张图片
添加这段代码即可

 
    
        contextConfigLocation
        classpath:applicationConText.xml
    

有的朋友在这里可能会迷惑,为什么这里路径要用classpath呢?这个applicationConText.xml不是在resources下么? 其实是因为我们的java程序最终打成jar包的时候,.class文件和配置文件都放到了classes中,所以要指向这个位置。
Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call_第6张图片
给大家教一个小技巧,以后遇到配置的属性,或者方法的后缀是Location或Locations的,那么全部都应该在classpath下,一般都是放到classpath下。

ok,配置完成之后,重新启动就可以了
Spring如果遇到这个问题:java.lang.IllegalStateException: BeanFactory not initialized or already closed - call_第7张图片

如果有什么问题,欢迎留言探讨。感谢免费评分…

你可能感兴趣的:(Spring中遇到的问题)