Spring学习(二十)Bean 的依赖关系介绍

在Spring容器中,两个Bean之间 除了注入关系外,还存在 继承、依赖、引用 三种关系:
  • 继承关系:在Spring容器当中允许使用abstract标签来定义一个父bean,parent标签来定义一个子bean。子bean将自动继承父bean的配置信息。
  • 依赖关系:Spring允许用户通过depends-on标签来设定bean的前置依赖bean,前置依赖的bean会在本bean实例化之前就创建好,来供本bean使用。
  • 引用关系:我们不光可以通过ref标签来引用其他的bean,而且可以通过idref标签来引用其他bean的名字。他的主要作用是:在Spring容器启动的时候就可以检查引用关系的正确性。那么这样就可以提前发现配置信息是否存在错误。

一.继承关系
在面向对象的编程原理中,当多个类拥有相同的方法和属性,则可以引入父类消除代码重复。
在Spring容器中,如果多个Bean存在相同的配置信息,同样可以定义一个父Bean子Bean将自动继承父Bean的配置信息。父bean中的所有属性值也会出现在子bean当中,那么假如子bean当中配置了父bean已有的属性的话,会覆盖掉父bean中的配置。
配置为父bean的bean当中的abstract属性值得赋值为
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring中的循环依赖指的是两个或多个Bean之间相互依赖,形成了一个循环依赖的关系。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A,这样就形成了一个循环依赖的关系。 当Spring容器在创建Bean时遇到循环依赖的情况,会抛出BeanCurrentlyInCreationException异常,提示循环依赖的存在。为了解决这个问题,Spring采用了“提前曝光”的方式来处理循环依赖。 具体来说,当发现循环依赖的情况时,Spring会将其中一个Bean提前暴露给另一个Bean使用。这个提前暴露的Bean会被注入一个代理对象(Proxy),而不是实际的Bean实例。当被注入Bean被调用时,代理对象会自动获取实际的Bean实例并调用其方法。 Spring中对于循环依赖的处理过程包括以下步骤: 1. 创建Bean A实例,并将其加入到缓存中。 2. 创建Bean B实例,发现Bean B依赖于Bean A。 3. 创建Bean A的代理对象,并注入Bean B中。 4. 使用Bean B的代理对象完成Bean B的创建,并将其加入到缓存中。 5. 使用Bean A的代理对象完成Bean A的创建,并将其加入到缓存中。 6. 将Bean A的实际实例注入Bean B的代理对象中。 7. 将Bean B的实际实例注入Bean A的代理对象中。 需要注意的是,对于循环依赖的处理过程,只有在Bean的作用域为单例(Singleton)时才会发生。对于其他作用域,例如原型(Prototype)作用域,Spring容器不会缓存Bean实例,也就不存在循环依赖的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值