zoukankan      html  css  js  c++  java
  • spring源码相关第一篇----------------------------spring bean定义解析

    一切都要从容器的创建开始,无论什么结合方法实现的都是先创建一个容器,而容器的创建大致可以分为xml方式,注解方式实现的容器,而其根容器通常为beanFactory

     这是一种经典的xml的创建方式,其它xml的创建方式不在做细分。

     这是注解方式实现的spring ioc容器的创建操作。

    ------------------------------------------------------以上为两大类实现ioc容器的方式

    无论哪种方式创建的ioc容器,最终都会走到如图所示的refresh方法,这个方法为ioc容器的创建的核心方法,spring源码解析操作,大部分也都是围绕这个方法进行描述。

     注意这里的两个方法实现的是对于的类的解析操作,生成对应的beanDefinition,之后将beanDefinition放入到beanFactory实例的beanDefinitionMap中。

    而这里配置相关的beandefinition的是在执行refresh方法执行执行的,放入到beanDefintionMap中的

    注意到这里的方法主要用于配置类相关的解析操作,对于其配置类上的@ComponentScan,@Scan进行相应的解析操作,同将对应条件之下bean创建成beanDefinition之后放入beanDefinitionMap中

    到此beanDefinition创建完成,也就是完成bean创建对象的必要的第一步工作。

     

    注意到这个方法,是将beanDefinitionMap中的实例拿出来进行逐个解析并实例化创建对象(代理对象,或者bean对象),完成ioc容器的bean所有的创建工作。

    注意到这里的doGetBean方法,正是这个方法完成了bean对象的创建工作,并将其创建成功bean对象(可能是代理对象,aop的实现也是存在于此处,请看aop解析相关博客)放入到singletonObjects中。

    beanPostProcessor主要用于完成属性的注入操作,此处正式aop实现之处,详细情况spring 源码解析,aop相关解析

    -----------------------------------------------------到此bean算是创建完成,之后随的ioc容器的销毁,bean对象也随即销毁。

    其它附加信息

      

     

  • 相关阅读:
    django 2.2, celery 4.3,出现 kombu.exceptions.EncodeError: cannot serialize '_io.BufferedReader' object 的分析解决
    python 算法
    zabbix--api学习之路--get_hostgroup获取
    zabbix-api学习之路--auth获取
    短链(ShortURL)的Java实现
    几种I/O模型功能和性能对比
    JMeter压测Rest请求
    git如何设置账号密码
    TCP和UDP之间的区别和联系
    Java BigDecimal和double
  • 原文地址:https://www.cnblogs.com/chaojibaidu/p/14964272.html
Copyright © 2011-2022 走看看