我是靠谱客的博主 干净哑铃,最近开发中收集的这篇文章主要介绍Spring--绘制DI时序图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一:什么是DI

DI:Dependency Injection ,即依赖注入,容器全权负责组件的装配,它会把符合依赖关系的对象通过属性(JavaBean中的setter)或者是构造方法传递给需要的对象。

二:时序图

DI时序图
三:浅析

DI可以大致分为实例化,赋值注入两个阶段。

1.实例化阶段

因为Spring默认是懒加载的,所以要调用getBean()方法时才会进行实例化,所以代码的入口应该是BeanFactory的getBean(),而BeanFactory的getBean()实际上调用的应该是AbstractBeanFactory的getBean(),而在getBean()中又调用了doGetBean()方法,而doGetBean()方法中调用了AbstractAutowireCapableBeanFactory中的createBean(),然后调用doCreateBean(),再接着调用createBeanInstance(),再调用instantiateBean()方法,接着调用SimpleInstantiationStrategy中的instantiate()方法,最后通过调用BeanUtils中的instantiateClass()方法进行实例化,而instantiateClass()实际上就是通过反射进行实例化。

2.赋值注入阶段

AbstractAutowireCapableBeanFactory类中调用了createBeanInstance()进行了实例化之后,还调用了populateBean()方法来进行属性注入,populateBean()中调用了applyPropertyValues()方法,applyPropertyValues()方法调用了AbstractPropertyAccessor的setPropertyValues()方法,setPropertyValues()方法中循环调用setPropertyValue()方法,setPropertyValue()方法实际调用的AbstractNestablePropertyAccessor中的setPropertyValue(),然后调用AbstractNestablePropertyAccessor的processLocalProperty,最后调用BeanWrapperImpl的setValue()方法进行赋值

最后

以上就是干净哑铃为你收集整理的Spring--绘制DI时序图的全部内容,希望文章能够帮你解决Spring--绘制DI时序图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部