欢迎光临散文网 会员登陆 & 注册

Spring DI之依赖注入

2022-06-17 21:09 作者:做架构师不做框架师  | 我要投稿


前言

在上篇文章“Spring DI三部曲之实例化”中,我们讲解了spring bean是如何实例化的,接下来我们会讲解是如何依赖注入的。


注意:本文是以5.2.3版本为讲解。

让我们再次回到故事的源头”
AbstractAutowireCapableBeanFactory#applyPropertyValue()“方法。

步骤一:对属性值进行依赖注入

BeanWrapperImpl 主要是对容器中完成初始化的 Bean 实例对象进行属性的依赖注入,即把 Bean 对象设置到它所依赖的另一个 Bean 的属性中去。然而,BeanWrapperImpl 中的注入方法实际上由
AbstractNestablePropertyAccessor 来实现的:




步骤二:将指定值设置为当前属性值




步骤三:实现属性依赖注入功能

大致业务逻辑如下:

  • getPropertyHoldingValue:调用属性的getter(readerMethod)方法,获取属性的值

  • 注入array类型的属性值

  • 注入list类型的属性值

  • 注入Map类型的属性值




  • 对于集合类型的属性,将其属性值解析为集合后直接赋值给属性。

  • 对于非集合类型的属性,使用了 JDK 的反射机制,通过属性的 getter()方法获取指定属性注入以前的值,同时调用属性的 setter()方法为属性设置注入后的值。

看到这里相信很多人都明白了 Spring 的 setter()注入原理。


时序图


写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。


Spring DI之依赖注入的评论 (共 条)

分享到微博请遵守国家法律