前面两篇文章讲Spring IOC 依赖注入和依赖查找的一些细节内容,那么无论是依赖注入 还是依赖查找 都有一个共同要涉及的问题就是依赖的来源。
本文我们来聊下两种方式依赖的来源以及有什么不同
以下是本篇文章讨论的内容:
== 此处CSDN 今天上传图有点问题,明天再上传==
BeanDefinitionBuilder
API 实现
内建BeanDefinition
Environment
systemProperties
…
可以通过API 注入
不能用于依赖查找
A:
C:BeanDefinitionBuilder
A:API 实现
B : 内建BeanDefinition
Environment
systemProperties
…
A :要素
注册:ConfigurableListableBeanFactory# registerResolvableDependency
B : 限制
无生命周期管理
无法实现延迟初始化 Bean
无法通过依赖查找 敖
A:要素
元数据:BeanDefinition注册:BeanDefinitionRegistory # registerBeanDefinition类型:延迟和非延迟 单例对象 作为依赖来源
A : 要素
来源:外部普通Java 对象(不一定是POJO)注册:SingletonBeanRegistry # registerSingleton
B : 限制无生命周期管理无法实现延迟初始化Bean
外部化配置作为依赖来源
A : 要素
类型 : 非常规Spring 对象依赖
B: 限制
无生命周期管理无法实现延迟初始化 Bean无法通过依赖查找 敖
C : 代码
AutowiredAnnotationBeanPostProcessor # resolveDependency getSuggestedValueDefaultListableBeanFactory # doResolveDependency getSuggestedValue 对比
单例对象作为依赖来源
外部化配置作为依赖来源
== 此处CSDN 今天上传图有点问题,明天再上传==



