zoukankan      html  css  js  c++  java
  • Spring IOC对Bean的装载过程与Bean的实例化过程

    一、Bean装载过程

    1、第一步是加载Bean配置文件

    Xml默认读取器类(XmlBeanDefinitionReader)加载配置Bean定义的配置文件。

    2、第二步是解析Bean配置文件

    由默认的文档读取器类(DefaultBeanDefinitionDocumentReader)对已经加载Bean的配置文件进行解析,接着解析成Element对象,依据每个Element对象解析处理Bean的配置属性(id、class、懒加载、单例/多例、init、销毁等相关配置Bean属性)。

    3、第三步是注册到Spring的IOC容器中

    由BeanFactory类(DefaultListableBeanFactory)对Bean的class属性反射机制以及其他属性来构建Bean对象来注册到IOC容器中。

    相关Spring Bean的加载过程:

    http://www.manongjc.com/article/112368.html

    https://www.cnblogs.com/bj-xiaodao/p/10777396.html

    二、Bean的获取与创建(实例化)过程

     1、实例化uBean的4种方式

    (1)使用构造器实例化

    (2)使用静态工厂方式实例化

    (3)使用实例工厂方法实例化

    (4)使用setter方式实例化

    相关链接

    https://www.jianshu.com/p/646c1f657144

    2、创建Bean的过程

    (1)首先从 getBean() 方法开始创建过程,getBean()有一系列的重载方法,最终都是调用doGetBean() 方法。

    (2)先尝试判断创建的这个Bean是否单例,如果是单例,再次判断缓存中是否存在这个Bean实例,存在就直接从缓存中获取这个Bean,通过getSingleton()方法尝试从缓存中获取单例bean。

    (3)如果创建的这个Bean是多例,或者是单例并且在缓存中没有,这时候执行创建Bean的doCreateBean()方法。

    (4)执行doCreateBean()方法,并由createBeanInstance()方法创建Bean。

    (5)createBeanInstance()方法使用反射实例化Bean,最后执行populateBean()方法主要给 Bean 填充依懒与属性的注入。

    图解

    相关链接

    https://blog.csdn.net/laravelshao/article/details/82318063

  • 相关阅读:
    Windows Phone 独立存储(IsolatedStorageFile) 简单
    Windows Phone HttpWebRequest 简单
    PHP register_shutdown_function函数详解 简单
    sap 系统参数设置
    记帐码: (posting key)
    FICO 面试题
    RFUMSV00 营业税预先申报
    零售业附加商品的应用
    FI 财务会计事务码
    ABAP MODIF ID 作用
  • 原文地址:https://www.cnblogs.com/c-xiaohai/p/12501467.html
Copyright © 2011-2022 走看看