`
jahu
  • 浏览: 61057 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

spring NoSuchBeanDefinitionException

    博客分类:
  • java
 
阅读更多

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创建错误。然后没有终止程序。

 

分享到:
评论

相关推荐

    flex-spring.pdf

    import org.springframework.beans.factory.NoSuchBeanDefinitionException; import flex.messaging.FactoryInstance; import flex.messaging.FlexFactory; import flex.messaging.config.ConfigMap; import ...

    spring-security出错问题

    常见的异常如`NoSuchBeanDefinitionException`可能表示某个必要的bean未被定义,或者`AuthenticationException`可能表明认证过程出错。 关于“疑似jar包或其他文件缺失”的提示,确保你的项目包含了所有必要的...

    Spring ioc源码解读

    ### Spring IoC源码解读 #### 一、Spring IoC 容器概述 Spring框架的核心功能之一便是依赖注入(Dependency Injection, DI),而这一功能主要通过IoC容器来实现。在Spring框架中,IoC容器负责管理应用对象的生命...

    spring的setter注入和构造注入(XML讲解以及常见错误)

    4. **注入的bean不存在**:当试图注入一个在XML配置中未定义的bean时,Spring会抛出`NoSuchBeanDefinitionException`。 5. **循环依赖**:两个或多个bean之间存在互相依赖的关系,如果没有正确处理,会导致Spring...

    Spring IOC容器实现分析

    4. `isSingleton(String name) throws NoSuchBeanDefinitionException;`:判断指定名称的Bean是否为单件模式。 #### 五、IOC容器的具体实现 - **DefaultListableBeanFactory**:这是一个常用的BeanFactory实现,它...

    spring源码解决

    解析了spring的底层实现机制。public interface BeanFactory { //这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象, //如果需要得到工厂本身,需要转义 String ...

    SPRING API 2.0.CHM

    NoSuchBeanDefinitionException NoSuchMessageException NoSuchRequestHandlingMethodException NotAnAtAspectException NotificationListenerBean NotificationPublisher NotificationPublisherAware ...

    Spring源码分析

    ### Spring源码分析之IOC容器深入探讨 #### 一、Spring框架及IOC容器概述 Spring框架作为企业级Java开发中最常用的轻量级框架之一,以其强大的功能和灵活的设计深受开发者们的喜爱。Spring的核心特性之一便是...

    spring错误总结.txt

    ### Spring错误总结与解决方案 #### 一、DefaultPointcutAdvisor BeanCreationException **问题描述**: 在尝试创建名为`org.springframework.aop.support.DefaultPointcutAdvisor`的Bean时遇到了`...

    spring boot整合mybatis-plus启动报错问题及解答.pdf

    当它找不到一个预期的bean,例如`UserMapper`,就会抛出`NoSuchBeanDefinitionException`。在本例中,问题出在Spring Boot无法找到并注册`UserMapper`作为bean,这通常是由于包扫描配置不正确或者缺少必要的注解。 ...

    spring源代码解析一[收集].pdf

    如果无法找到Bean的定义,它会抛出`NoSuchBeanDefinitionException`。 最后,`getAliases(String name)`方法返回Bean的别名数组,别名可以有多个,使得可以从多个名称引用同一个Bean。这增加了代码的灵活性,使得...

    SpringMybatis:springMybatis多数据源

    SpringMybatis Spring / Mybatis多... org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到类型为[com.proto.net.aron.aronMapper]的合​​格Bean作为依赖项:至少应有1个有资格作为此依赖

    浅谈Spring解决循环依赖的三种方式

    否则,将抛出NoSuchBeanDefinitionException异常。 第三种:使用三级缓存解决循环依赖 三级缓存是Spring容器中的一种机制,用于解决循环依赖问题。三级缓存将每个Bean的依赖关系缓存在一个Map中,其中包括...

    关于springboot我出过的那些错误.docx

    错误六:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'convertServiceBean' available 错误原因:没有读取到 bean 特定的对象,没有配置名为 convertServiceBean 的 bean ...

    三大框架如何进行注解式注入

    在试图注入`ImplService`类型时,Spring会抛出`NoSuchBeanDefinitionException`,因为它无法确定应该注入哪个实现。为了解决这个问题,你可以使用`@Qualifier`注解来明确指定bean: ```java @Autowired @Qualifier...

    Spring通过ApplicationContext主动获取bean的方法讲解

    public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { return applicationContext.isSingleton(name); } } ``` 在上面的代码中,我们实现了ApplicationContextAware接口,并...

    No bean named 'user' available

    org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' available

    Java开发学习(三)----Bean基础配置及其作用范围.doc

    如果不存在,Spring会抛出`NoSuchBeanDefinitionException`异常。当无法通过id或name获取bean时,也需要检查名称是否正确。 5. **注意事项** - 在配置bean时,务必确保id和name的唯一性,以避免命名冲突。 - 当...

Global site tag (gtag.js) - Google Analytics