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

    好了,有没有了解呢? 

  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/iscys/p/9903766.html
Copyright © 2011-2022 走看看