栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring 系列 | Spring IOC依赖的来源

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring 系列 | Spring IOC依赖的来源

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

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

Spring IOC依赖的来源 一 依赖查找的来源 Spring BeanDefinition

@Bean public User user(){}
BeanDefinitionBuilder

单例对象

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

二 依赖注入的来源 非Spring 容器管理对象

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

Spring BeanDefinition

A: 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 getSuggestedValueDefaultListableBeanFactory # doResolveDependency getSuggestedValue 对比

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号