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对象也随即销毁。

    其它附加信息

      

     

  • 相关阅读:
    异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
    【IntelliJ IDEA】使用idea解决新建jsp文件而找不到jsp文件模版的新建选项
    SpringBoot 上传附件
    SpringBoot访问资源文件
    springboot 整合 listener
    SpringBoot 整合 filter
    Hello_SpringBoot_demo
    springBoot 整合servlet
    RROR:o.s.b.d.LoggingFailureAnalysisReporter解决办法
    使用IDEA创建一个springboot项目
  • 原文地址:https://www.cnblogs.com/chaojibaidu/p/14964272.html
Copyright © 2011-2022 走看看