spring DI

2018-07-24  本文已影响0人  维特无忧堡

今天早上抽空看来一下spring依赖注入的源码,在这里记录一下它的调用流程吧

依赖注入实现原理

  实质上就是new一个对象,并给其属性赋值(setter注入和构造器注入)
  那么落实到spring是怎么实现的呢?
  首先它是先调用getBean方法, 然后getBean又调用了doGetBean方法,然后在其中调用了createBean方法,创建过程后委托给了doCreateBean。所以实际上最重要的方法就是doCreateBean。
  在doCreateBean有两个方法(1)createBeanInstance,作用是生成Java对象。(2)populateBean完成注入。
  在createBeanInstance中创建对象的方式有两种,BeanUtil和Cglib,前者是又java反射实现的,后者是对字节码加强的一种方式。
  在populateBean中调用appPropertyValues中进行注入,获取BeanDefinition中的属性信息然后给属性赋值。这样一个依赖注入的过程就完成了。
  不过如果让我设计我肯定不会写成这样,它弄了好多抽象类和接口,工厂模式用的飞起...毕竟是大牛

上一篇下一篇

猜你喜欢

热点阅读