Spring 发生 has not been refreshed yet 异常
Spring发生ApplicationContext has not been refreshed yet 错误的场景为:在Spring容器初始化时发生异常,此时 Spring还没有执行 destroy(该方法中会执行 close()->doClose())方法时尝试去获取Bean时会出现这个问题。因为在Spring容器初始化时发生异常Spring会在catch块中捕捉异常然后调用...
Spring发生 ApplicationContext has not been refreshed yet 错误的场景为:
在Spring容器初始化时发生异常,此时 Spring还没有执行 destroy(该方法中会执行 close()->doClose()) 方法时尝试去获取Bean时会出现这个问题。因为在Spring容器初始化时发生异常 Spring会在catch块中捕捉异常然后调用 cancelRefresh方法,这个方法中会将 AbstractApplicationContext.active 设为 false,Spring在尝试进行获取 Bean 时会进入AbstractApplicationContext.assertBeanFactoryActive 方法,这个方法会校验 active 的值,如果为false 则会校验AbstractApplicationContext.closed 的值,如果 close 也为 true 的话就抛出has been closed already 异常,否则抛出 has not been refreshed yet 的异常。close 在执行 AbstractApplicationContext.doClose 方法中会被设为 true 。
更多推荐
所有评论(0)