Spring 系列 | Spring IOC依赖的来源

前面两篇文章讲Spring IOC 依赖注入和依赖查找的一些细节内容,那么无论是依赖注入 还是依赖查找 都有一个共同要涉及的问题就是依赖的来源。
本文我们来聊下两种方式依赖的来源以及有什么不同

以下是本篇文章讨论的内容:
== 此处CSDN 今天上传图有点问题,明天再上传==

Spring IOC依赖的来源

一 依赖查找的来源

Spring BeanDefinition

<bean id= “user” class=“org…User”
@Bean public User user(){}
BeanDefinitionBuilder

单例对象

API 实现
内建BeanDefinition
Environment
systemProperties
…

二 依赖注入的来源

非Spring 容器管理对象

可以通过API 注入
不能用于依赖查找

Spring BeanDefinition

A:<bean id= “user” class=“org…User”
B: @Bean public User user(){}
C:BeanDefinitionBuilder

单例对象

A:API 实现
B : 内建BeanDefinition
 Environment
 systemProperties
 …

外部化配置

Spring 容器管理和游离对象

非 Spring 容器管理对象作为依赖来源

A :要素
注册:ConfigurableListableBeanFactory# registerResolvableDependency
B : 限制
无生命周期管理
无法实现延迟初始化 Bean
无法通过依赖查找 🪐

Spring Bean Definition 作为依赖来源

A:要素

  • 元数据:BeanDefinition
  • 注册:BeanDefinitionRegistory # registerBeanDefinition
  • 类型:延迟和非延迟

单例对象 作为依赖来源

A : 要素

  • 来源:外部普通Java 对象(不一定是POJO)
  • 注册:SingletonBeanRegistry # registerSingleton
    B : 限制
  • 无生命周期管理
  • 无法实现延迟初始化Bean

外部化配置作为依赖来源

A : 要素

  • 类型 : 非常规Spring 对象依赖

B: 限制

  • 无生命周期管理
  • 无法实现延迟初始化 Bean
  • 无法通过依赖查找 🪐

C : 代码

  • AutowiredAnnotationBeanPostProcessor # resolveDependency getSuggestedValue
  • DefaultListableBeanFactory # doResolveDependency getSuggestedValue

对比

单例对象作为依赖来源
外部化配置作为依赖来源

== 此处CSDN 今天上传图有点问题,明天再上传==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值