1。这个问题偶尔遇到。再起启动就不报错了。而然昨天报错了很久。spring吞掉异常了。只好一步步调试。发现在创建bean的时候,
会调用 AbstractApplicationContext 类的
protected void assertBeanFactoryActive() { if (!this.active.get()) { if (this.closed.get()) { throw new IllegalStateException(getDisplayName() + " has been closed already"); } else { throw new IllegalStateException(getDisplayName() + " has not been refreshed yet"); } } }
active的值改成false了。
修改方法是
protected void cancelRefresh(BeansException ex) { this.active.set(false); }
调用方法是
@Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the subclass to refresh the internal bean factory. ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); // Prepare the bean factory for use in this context. prepareBeanFactory(beanFactory); try { // Allows post-processing of the bean factory in context subclasses. postProcessBeanFactory(beanFactory); // Invoke factory processors registered as beans in the context. invokeBeanFactoryPostProcessors(beanFactory); // Register bean processors that intercept bean creation. registerBeanPostProcessors(beanFactory); // Initialize message source for this context. initMessageSource(); // Initialize event multicaster for this context. initApplicationEventMulticaster(); // Initialize other special beans in specific context subclasses. onRefresh(); // Check for listener beans and register them. registerListeners(); // Instantiate all remaining (non-lazy-init) singletons. finishBeanFactoryInitialization(beanFactory); // Last step: publish corresponding event. finishRefresh(); } catch (BeansException ex) { if (logger.isWarnEnabled()) { logger.warn("Exception encountered during context initialization - " + "cancelling refresh attempt: " + ex); } // Destroy already created singletons to avoid dangling resources. destroyBeans(); // Reset 'active' flag. cancelRefresh(ex); // Propagate exception to caller. throw ex; } finally { // Reset common introspection caches in Spring's core, since we // might not ever need metadata for singleton beans anymore... resetCommonCaches(); } } }
原因是在初始化异常bean的时候,有其他的bean创建错误。然后没有终止程序。
相关推荐
import org.springframework.beans.factory.NoSuchBeanDefinitionException; import flex.messaging.FactoryInstance; import flex.messaging.FlexFactory; import flex.messaging.config.ConfigMap; import ...
常见的异常如`NoSuchBeanDefinitionException`可能表示某个必要的bean未被定义,或者`AuthenticationException`可能表明认证过程出错。 关于“疑似jar包或其他文件缺失”的提示,确保你的项目包含了所有必要的...
### Spring IoC源码解读 #### 一、Spring IoC 容器概述 Spring框架的核心功能之一便是依赖注入(Dependency Injection, DI),而这一功能主要通过IoC容器来实现。在Spring框架中,IoC容器负责管理应用对象的生命...
4. **注入的bean不存在**:当试图注入一个在XML配置中未定义的bean时,Spring会抛出`NoSuchBeanDefinitionException`。 5. **循环依赖**:两个或多个bean之间存在互相依赖的关系,如果没有正确处理,会导致Spring...
4. `isSingleton(String name) throws NoSuchBeanDefinitionException;`:判断指定名称的Bean是否为单件模式。 #### 五、IOC容器的具体实现 - **DefaultListableBeanFactory**:这是一个常用的BeanFactory实现,它...
解析了spring的底层实现机制。public interface BeanFactory { //这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象, //如果需要得到工厂本身,需要转义 String ...
NoSuchBeanDefinitionException NoSuchMessageException NoSuchRequestHandlingMethodException NotAnAtAspectException NotificationListenerBean NotificationPublisher NotificationPublisherAware ...
### Spring源码分析之IOC容器深入探讨 #### 一、Spring框架及IOC容器概述 Spring框架作为企业级Java开发中最常用的轻量级框架之一,以其强大的功能和灵活的设计深受开发者们的喜爱。Spring的核心特性之一便是...
### Spring错误总结与解决方案 #### 一、DefaultPointcutAdvisor BeanCreationException **问题描述**: 在尝试创建名为`org.springframework.aop.support.DefaultPointcutAdvisor`的Bean时遇到了`...
当它找不到一个预期的bean,例如`UserMapper`,就会抛出`NoSuchBeanDefinitionException`。在本例中,问题出在Spring Boot无法找到并注册`UserMapper`作为bean,这通常是由于包扫描配置不正确或者缺少必要的注解。 ...
如果无法找到Bean的定义,它会抛出`NoSuchBeanDefinitionException`。 最后,`getAliases(String name)`方法返回Bean的别名数组,别名可以有多个,使得可以从多个名称引用同一个Bean。这增加了代码的灵活性,使得...
SpringMybatis Spring / Mybatis多... org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到类型为[com.proto.net.aron.aronMapper]的合格Bean作为依赖项:至少应有1个有资格作为此依赖
否则,将抛出NoSuchBeanDefinitionException异常。 第三种:使用三级缓存解决循环依赖 三级缓存是Spring容器中的一种机制,用于解决循环依赖问题。三级缓存将每个Bean的依赖关系缓存在一个Map中,其中包括...
错误六:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'convertServiceBean' available 错误原因:没有读取到 bean 特定的对象,没有配置名为 convertServiceBean 的 bean ...
在试图注入`ImplService`类型时,Spring会抛出`NoSuchBeanDefinitionException`,因为它无法确定应该注入哪个实现。为了解决这个问题,你可以使用`@Qualifier`注解来明确指定bean: ```java @Autowired @Qualifier...
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { return applicationContext.isSingleton(name); } } ``` 在上面的代码中,我们实现了ApplicationContextAware接口,并...
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' available
如果不存在,Spring会抛出`NoSuchBeanDefinitionException`异常。当无法通过id或name获取bean时,也需要检查名称是否正确。 5. **注意事项** - 在配置bean时,务必确保id和name的唯一性,以避免命名冲突。 - 当...