一、DefaultListableBeanFactory简介
DefaultListableBeanFactory是bean加载的核心部分,是Spring注册及加载的默认实现。继承关系如下图:
AbstractAutowireCapableBeanFactory完成Bean的
创建,属性的注入,切面代理的产生,bean的生命周期的管理。
二、AbstractAutowireCapableBeanFactory源码分析
doCreateBean方法完成了bean的
创建和初始化。
Spring容器中默认注册了多个后置处理器。实现
InstantiationAwareBeanPostProcessor接口的类,在bean实例化前后和初始化前后会调用相应的实现方法。
1.
createBeanInstance():通过反射实现实例化bean。
2.
addSingletonFactory():如果是单例,加入到单例池中。
3.
populateBean():注入属性对象
3.1 遍历BeanPostProcessor列表,回调postProcessAfterInstantiation()方法。
3.2 遍历BeanPostProcessor列表,回调postProcessPropertyValues()方法。
CommonAnnotationBeanPostProcessor:注入@Resource注释的对象。
AutowiredAnnotationBeanPostProcessor:注入@Autowired注释的对象。
RequiredAnnotationBeanPostProcessor校验@Required注释的方法是否调用。
4.
initializeBean():初始化bean。
4.1 遍历BeanPostProcessor列表,回调postProcessBeforeInitialization()方法。
ApplicationContextAwareProcessor:回调实现了EnvironmentAware,EmbeddedValueResolverAware,ResourceLoaderAware,ApplicationEventPublisherAware,ApplicationContextAware等接口的方法,注入对应的Environment,StringValueResolver,ResourceLoader,ApplicationEventPublisher,ApplicationContext对象。
ServletContextAwareProcessor:回调实现了ServletContextAware,ServletConfigAware等接口的方法,注入对应的ServletContext,ServletConfig对象。
4.2 如果实现InitializingBean接口就回调bean的afterPropertiesSet()方法。
4.3 如果bean配置了initMethod属性,执行initMethod指定的方法。
4.4 遍历BeanPostProcessor列表,回调postProcessAfterInitialization()方法。
ApplicationListenerDetector:注册ApplicationListener。
- 大小: 46.4 KB
- 大小: 156.5 KB
- 大小: 63.7 KB
分享到:
相关推荐
在Spring框架中,Bean的创建和初始化是IoC(Inversion of Control)容器的核心功能,这一过程涉及到多个步骤。以下是对Spring Bean创建初始化流程的详细解释: 1. **初始化ApplicationContext**: 开始时,通过`...
然后,通过调用`getBeanFactory()`方法,我们可以得到`DefaultListableBeanFactory`类型的`BeanFactory`实例,这个实例是Spring容器内部管理Bean的真正场所。 ```java ConfigurableApplicationContext ...
在 Spring 中,bean 的加载过程是通过 XmlBeanFactory 或 DefaultListableBeanFactory 实现的。XmlBeanFactory 是 Spring 提供的一个基本的 bean factory,它可以从 XML 文件中加载 bean 的定义,并将其注册到容器中...
在Spring框架中,Bean容器是核心组件之一,它负责管理和装配应用中的对象。"深度解析spring容器管理bean"这一主题,旨在深入理解Spring如何通过反射机制、依赖注入(DI)以及XML或Java配置来实现对Bean的生命周期...
在Spring框架中,Bean的初始化是一个至关重要的过程,它涉及到从XML配置文件或者注解中读取Bean的定义,解析并构建Bean实例。本篇文章主要分析了Spring如何通过`ClassPathXmlApplicationContext`来启动和初始化Bean...
Spring框架是Java应用程序开发中的核心组件,其管理Bean的生命周期是其重要特性之一。Bean生命周期的理解对于优化应用性能和理解Spring内部工作原理至关重要。这里我们将深入探讨Spring的Bean生命周期、容器周期以及...
在开发中,Spring提供的各种工具如`BeanPostProcessor`、`InstantiationAwareBeanPostProcessor`等接口,允许我们自定义Bean的创建和初始化过程,进一步扩展Spring的功能。 总结来说,Spring提供多种方式让我们在...
Spring Boot动态创建Bean示例代码详解 Spring Boot框架中提供了多种方式来创建Bean,今天我们就来学习其中的一种,即动态创建Bean。动态创建Bean可以根据特定的条件来决定是否创建Bean,这在实际开发中非常有用。 ...
例如,`DefaultListableBeanFactory`在创建Bean实例时会处理Bean定义的继承链。 最后,关于`工具`标签,这里可能指的是使用Spring工具类或者IDE插件来辅助理解和操作Bean的继承配置。例如,Spring Tool Suite (STS)...
在Spring框架中,Bean工厂是核心组件之一,它负责管理所有Bean的生命周期,包括实例化、配置、装配以及销毁。本章将详细分析Spring 5.2.9版本中Bean工厂的准备工作,特别是通过测试用例来理解其实现细节。 在Spring...
在Spring框架中,Bean加载是核心功能之一,它关乎到整个应用的生命周期管理和依赖注入。Spring通过XML配置、注解配置或Java配置三种方式来定义Bean,并进行加载。接下来,我们将详细探讨Spring Bean加载的过程及其...
在Spring容器启动时,它会首先解析XML配置(如果有)和注解(如@Service、@Repository、@Controller等),生成Bean Definition并存储在DefaultListableBeanFactory中。同时,Spring会识别出那些实现了...
在Spring框架中,Bean的属性注入是核心功能之一,它允许我们为Bean对象设置各种属性值,以便在应用运行时创建和配置完全初始化的对象。在本篇内容中,我们将深入探讨Spring如何处理Bean的属性注入,包括对象属性的...
Spring框架中的Bean生命周期管理是Spring容器的基本工作之一。它涉及到从创建Bean实例、配置所有属性、到初始化完成后的可用以及销毁实例前的清理等一系列过程。掌握Spring Bean的生命周期对于理解Spring框架的运行...
Spring框架是Java开发中广泛使用的轻量级框架,它的核心特性之一就是依赖注入(Dependency Injection,简称DI)。本文将深入探讨Spring如何通过读取配置文件实现依赖注入,并讲解相关源码,帮助理解其工作原理。 在...
在Spring框架中,Bean Factory通过一系列的配置信息(如XML、Java注解或Groovy脚本)读取bean的定义,并创建bean实例。这些bean实例被存储在一个内部的Map结构中,键通常是bean的ID,值则是对应的bean实例。当应用...
2. **实例化Bean工厂**:`AnnotationConfigApplicationContext`的构造函数中,会初始化一个`DefaultListableBeanFactory`,这是Spring中处理Bean的核心组件。`DefaultListableBeanFactory`负责管理Bean的定义、创建...
在具体实现中,Spring的`DefaultListableBeanFactory`类是Bean工厂的主要实现,它负责读取配置、创建Bean实例。在处理`@Autowired`时,`AutowiredAnnotationBeanPostProcessor`起着关键作用。这个类实现了Bean后...
在Spring源码中,`DefaultListableBeanFactory`是实现Bean工厂的主要类,它实现了`BeanFactory`接口。这个类负责解析XML配置,创建Bean实例,并管理Bean的依赖注入。在解析XML时,Spring使用`BeanDefinitionReader`...
在Spring框架中,每个Bean都经历了从创建到销毁的完整生命周期。这个过程涉及多个阶段,包括实例化、初始化、配置、后处理以及销毁。今天我们将深入探讨这些阶段,并结合源码分析Spring如何管理Bean的生命周期。 1....