`
ncs123
  • 浏览: 102745 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring之DefaultListableBeanFactory的bean的创建过程

阅读更多
一、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创建初始化流程.docx

    在Spring框架中,Bean的创建和初始化是IoC(Inversion of Control)容器的核心功能,这一过程涉及到多个步骤。以下是对Spring Bean创建初始化流程的详细解释: 1. **初始化ApplicationContext**: 开始时,通过`...

    spring运行过程中动态注册bean

    然后,通过调用`getBeanFactory()`方法,我们可以得到`DefaultListableBeanFactory`类型的`BeanFactory`实例,这个实例是Spring容器内部管理Bean的真正场所。 ```java ConfigurableApplicationContext ...

    详解Spring简单容器中的Bean基本加载过程

    在 Spring 中,bean 的加载过程是通过 XmlBeanFactory 或 DefaultListableBeanFactory 实现的。XmlBeanFactory 是 Spring 提供的一个基本的 bean factory,它可以从 XML 文件中加载 bean 的定义,并将其注册到容器中...

    深度解析spring容器管理bean

    在Spring框架中,Bean容器是核心组件之一,它负责管理和装配应用中的对象。"深度解析spring容器管理bean"这一主题,旨在深入理解Spring如何通过反射机制、依赖注入(DI)以及XML或Java配置来实现对Bean的生命周期...

    Spring 源码分析(Bean的初始化)

    在Spring框架中,Bean的初始化是一个至关重要的过程,它涉及到从XML配置文件或者注解中读取Bean的定义,解析并构建Bean实例。本篇文章主要分析了Spring如何通过`ClassPathXmlApplicationContext`来启动和初始化Bean...

    Spring的bean生命周期

    Spring框架是Java应用程序开发中的核心组件,其管理Bean的生命周期是其重要特性之一。Bean生命周期的理解对于优化应用性能和理解Spring内部工作原理至关重要。这里我们将深入探讨Spring的Bean生命周期、容器周期以及...

    Spring在应用中获得Bean的方法

    在开发中,Spring提供的各种工具如`BeanPostProcessor`、`InstantiationAwareBeanPostProcessor`等接口,允许我们自定义Bean的创建和初始化过程,进一步扩展Spring的功能。 总结来说,Spring提供多种方式让我们在...

    Spring Boot如何动态创建Bean示例代码

    Spring Boot动态创建Bean示例代码详解 Spring Boot框架中提供了多种方式来创建Bean,今天我们就来学习其中的一种,即动态创建Bean。动态创建Bean可以根据特定的条件来决定是否创建Bean,这在实际开发中非常有用。 ...

    Spring In Action 继承Bean的配置

    例如,`DefaultListableBeanFactory`在创建Bean实例时会处理Bean定义的继承链。 最后,关于`工具`标签,这里可能指的是使用Spring工具类或者IDE插件来辅助理解和操作Bean的继承配置。例如,Spring Tool Suite (STS)...

    spring 5.2.9 07 源码分析-spring的bean工厂准备工作 测试用例

    在Spring框架中,Bean工厂是核心组件之一,它负责管理所有Bean的生命周期,包括实例化、配置、装配以及销毁。本章将详细分析Spring 5.2.9版本中Bean工厂的准备工作,特别是通过测试用例来理解其实现细节。 在Spring...

    spring bean加载

    在Spring框架中,Bean加载是核心功能之一,它关乎到整个应用的生命周期管理和依赖注入。Spring通过XML配置、注解配置或Java配置三种方式来定义Bean,并进行加载。接下来,我们将详细探讨Spring Bean加载的过程及其...

    详解Spring Boot 使用Java代码创建Bean并注册到Spring中

    在Spring容器启动时,它会首先解析XML配置(如果有)和注解(如@Service、@Repository、@Controller等),生成Bean Definition并存储在DefaultListableBeanFactory中。同时,Spring会识别出那些实现了...

    day38 11-Spring的Bean的属性的注入:对象属性

    在Spring框架中,Bean的属性注入是核心功能之一,它允许我们为Bean对象设置各种属性值,以便在应用运行时创建和配置完全初始化的对象。在本篇内容中,我们将深入探讨Spring如何处理Bean的属性注入,包括对象属性的...

    Spring.pdf

    Spring框架中的Bean生命周期管理是Spring容器的基本工作之一。它涉及到从创建Bean实例、配置所有属性、到初始化完成后的可用以及销毁实例前的清理等一系列过程。掌握Spring Bean的生命周期对于理解Spring框架的运行...

    Spring读取配置文件原理(Spring如何依赖注入的)

    Spring框架是Java开发中广泛使用的轻量级框架,它的核心特性之一就是依赖注入(Dependency Injection,简称DI)。本文将深入探讨Spring如何通过读取配置文件实现依赖注入,并讲解相关源码,帮助理解其工作原理。 在...

    spring源码剖析

    在Spring框架中,Bean Factory通过一系列的配置信息(如XML、Java注解或Groovy脚本)读取bean的定义,并创建bean实例。这些bean实例被存储在一个内部的Map结构中,键通常是bean的ID,值则是对应的bean实例。当应用...

    深入解析Spring IoC源码:核心机制与实践应用

    2. **实例化Bean工厂**:`AnnotationConfigApplicationContext`的构造函数中,会初始化一个`DefaultListableBeanFactory`,这是Spring中处理Bean的核心组件。`DefaultListableBeanFactory`负责管理Bean的定义、创建...

    Spring学习笔记(6)----编码剖析Spring依赖注入的原理

    在具体实现中,Spring的`DefaultListableBeanFactory`类是Bean工厂的主要实现,它负责读取配置、创建Bean实例。在处理`@Autowired`时,`AutowiredAnnotationBeanPostProcessor`起着关键作用。这个类实现了Bean后...

    spring核心工厂配置源码

    在Spring源码中,`DefaultListableBeanFactory`是实现Bean工厂的主要类,它实现了`BeanFactory`接口。这个类负责解析XML配置,创建Bean实例,并管理Bean的依赖注入。在解析XML时,Spring使用`BeanDefinitionReader`...

    day38 09-Spring类的完整生命周期及后处理Bean

    在Spring框架中,每个Bean都经历了从创建到销毁的完整生命周期。这个过程涉及多个阶段,包括实例化、初始化、配置、后处理以及销毁。今天我们将深入探讨这些阶段,并结合源码分析Spring如何管理Bean的生命周期。 1....

Global site tag (gtag.js) - Google Analytics