spring多模块开发注入问题(SpringDI之依赖注入)
spring多模块开发注入问题(SpringDI之依赖注入)大致业务逻辑如下:看到这里相信很多人都明白了 Spring 的 setter()注入原理。好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。
在上篇文章“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”,全部都是干货。