Loading

Spring依赖解析过程和重写bean定义

一.依赖解析过程

Spring容器的启动过程可分为两个阶段:

第一阶段:容器处理配置元数据并建立元数据中存在的Bean定义,容器还会对这些Bean定义验证是否正确。

注意:这一阶段Bean并没有被创建,相关的属性也没有被注入。

第二阶段:首先容器完成对Bean的创建,然后完成注入工作。 但实际上并不是所有的Bean都被创建。 我们知道,一些Bean的创建实际上触发了一连串其他依赖Bean的创建,而这些依赖Bean又会触发它们的依赖性的创建,以此类推。

注意:一个Bean在完全被创建且自己的依赖性被注入之前是不会作为一个依赖项注入到别的Bean中去的。所以构造器的循环注入会出现死锁情况。 还有,不建议我们使用循环注入。

二.重写Bean定义

Spring容器提供了两种不同形式的Bean重写机制:

第一种:发生在Bean配置元数据文件级别。
首先将配置元数据划分到多个不同的文件或类中去,然后再ApplicationContext(容器)创建期间指定这些文件或类组合在一起。此时Spring容器将来自不同配置源的所有Bean定义合并在一起,在这个期间,配置源的顺序很重要,若前后存在Bean重名,后者将覆盖前者。

第二种:发生在容器级别
ApplicationContext可能有父ApplicationContext,当它们俩的实例中共存了两个同名的Bean实例时,Spring将提供

posted @ 2020-05-24 17:22  文牧之  阅读(16)  评论(0)    收藏  举报  来源