zoukankan      html  css  js  c++  java
  • Spring InitializingBean 接口以及Aware接口实现的原理

      

    关于Spring InitializingBean 接口以及Aware接口实现的其实都在

     第11步中;

    finishBeanFactoryInitialization() 方法中完成了3部分的内容:

    1.完成对单例的非懒加载的bean 进行初始化

    2.对于InitializingBean 接口 spring 会自动调用它的 afterPropertiesSet方法;

    3.还进行了对实现了Aware 接口实现的调用

    多说无益,我们来看一看,它是怎么完成初始化,以及接口的调用;

    a:  第一步肯定是我们的入口refresh()方法:我们进入 finishBeanFactoryInitialization()中

    b: 我们进入实例化的方法中: beanFactory.preInstantiateSingletons(); 

    c : 就是创建bean 的方法:我们点进去瞧瞧

    d :经过doGetBean (),我们需要去看createBean()实现 

    e :关键的步骤来了,所有的方法都在createBean()中实现,实现类是AbstractAutoWrieCapableBeanFactory() 中,有很多有用的方法;

    f:继续调用doCreateBean(); 

    g: 对bean 的实例化。具体你们可以去往下点,通过反射实例化对象

    h :在初始化成功后,就开始检测这个bean 是否实现了InitializingBean 以及Aware接口;就是这个initializeBen()

    我们点进去看看。主要两个方法:  

      (1),invokeAwareMethods():调用实现了Aware 接口的方法; 

      (2), invokeInitMethod(): 调用实现InitializingBean 的方法:

     我们看一看Aware 接口的调用实现:

     

    InitializingBean 接口调用实现:会调用afterPropertiesSet()方法:

        哈哈,在Springmvc中RequestHandlerMapping() 的URL注册就是这么实现的 

    从这个顺序也可以看粗:Aware 先执行后是InitializingBean

    好了,有没有了解呢? 

  • 相关阅读:
    Android SDK manager 无法更新解决方法
    platform_set_drvdata的源码分析
    从一个男人身上看出他的修养和抱负
    更换RAID1硬盘过程记录
    无线路由器连接有线路由器设置
    在ASP.NET下实现数字和字符相混合的验证码 (转载)
    不走寻常路 设计ASP.NET应用程序的七大绝招
    .NET 2005 使用MasterPages实现Web窗体模板
    用Visual C# 实现四则混合运算(转载)
    如何实施好CRM (转载)
  • 原文地址:https://www.cnblogs.com/iscys/p/9903766.html
Copyright © 2011-2022 走看看