当前位置: 首页 > wzjs >正文

要建设企业网站国外很炫酷的网站

要建设企业网站,国外很炫酷的网站,app开发定制专家公司,建自己的网站做外贸在 Spring 框架里,循环依赖是指多个 Bean 之间相互依赖形成一个闭环。Spring 利用三级缓存机制能解决大部分单例 Bean 的循环依赖问题,但在某些特定情形下,循环依赖问题依旧无法解决,下面为你详细阐述这些情况。 1. 原型&#xf…

在 Spring 框架里,循环依赖是指多个 Bean 之间相互依赖形成一个闭环。Spring 利用三级缓存机制能解决大部分单例 Bean 的循环依赖问题,但在某些特定情形下,循环依赖问题依旧无法解决,下面为你详细阐述这些情况。

1. 原型(Prototype)作用域的 Bean 循环依赖

Spring 解决循环依赖的核心机制主要是针对单例 Bean 设计的,对于原型作用域的 Bean,它无法处理循环依赖问题。这是由于原型 Bean 的特性决定的,每次请求原型 Bean 时,Spring 都会创建一个全新的实例,并且不会对这些原型 Bean 的早期引用进行缓存。

当出现原型 Bean 的循环依赖时,就会陷入一个无限创建 Bean 的死循环。比如,有两个原型 Bean:BeanA 和 BeanBBeanA 的创建依赖于 BeanB,而 BeanB 的创建又依赖于 BeanA。当 Spring 尝试创建 BeanA 时,因为 BeanA 依赖 BeanB,所以会去创建 BeanB;但创建 BeanB 又需要 BeanA,于是又会去创建 BeanA,如此反复,不断创建新的 BeanA 和 BeanB 实例,最终导致 BeanCurrentlyInCreationException 异常。

2. 构造器注入的循环依赖

如果 Bean 之间的循环依赖是通过构造器注入来实现的,Spring 也无法解决该问题。构造器注入要求在创建 Bean 实例时,必须先获取到所有依赖的 Bean 实例。

假设存在 BeanC 和 BeanD 两个 Bean,BeanC 的构造器需要传入 BeanD 的实例,而 BeanD 的构造器又需要传入 BeanC 的实例。当 Spring 尝试创建 BeanC 时,会先去获取 BeanD 的实例,然而 BeanD 的创建又依赖于 BeanC,这就形成了一个死循环,导致无法确定应该先创建哪个 Bean,最终抛出 BeanCurrentlyInCreationException 异常。

3. 多例作用域 Bean 与单例 Bean 的循环依赖

当多例作用域的 Bean 和单例 Bean 之间存在循环依赖时,Spring 同样无法解决。多例 Bean 每次被请求时都会创建新的实例,这与单例 Bean 不同,单例 Bean 在整个应用程序中只有一个实例,并且 Spring 会对单例 Bean 的早期引用进行缓存。

由于多例 Bean 没有缓存机制,无法像单例 Bean 那样提供早期引用,所以当多例 Bean 和单例 Bean 相互依赖形成循环时,就会出现问题。例如,单例 BeanE 依赖多例 BeanF,而 BeanF 又依赖 BeanE。在创建 BeanE 时需要 BeanF 的实例,创建 BeanF 又需要 BeanE,由于 BeanF 每次都创建新实例,无法提供早期引用,就会陷入循环创建的困境。

4. AOP 增强的 Bean 循环依赖(部分情况)

当涉及到 AOP 增强的 Bean 并且使用构造器注入时,可能会出现循环依赖问题。AOP 会为 Bean 创建代理对象,代理对象的创建时机可能会影响到循环依赖的解决。

在构造器注入的情况下,Spring 需要在创建 Bean 实例时就确定所有依赖的 Bean 实例。而 AOP 代理对象的创建可能需要在 Bean 初始化的特定阶段进行,这就可能导致无法及时提供早期引用。例如,BeanG 和 BeanH 是 AOP 增强的 Bean,并且通过构造器相互依赖。在创建 BeanG 时,由于需要 BeanH 的实例,而 BeanH 的 AOP 代理对象可能还未创建好,无法提供早期引用,从而导致循环依赖问题无法解决。

综上所述,在实际开发过程中,我们应该尽量避免上述这些可能导致 Spring 无法解决循环依赖的情况,以确保应用程序的稳定性和正常运行。如果无法避免循环依赖,可以考虑使用 setter 方法注入代替构造器注入,或者调整 Bean 的设计和依赖关系。


文章转载自:

http://qIOcxD81.tLrxt.cn
http://aKWxFBms.tLrxt.cn
http://UHM4UJr9.tLrxt.cn
http://IrPVjfZo.tLrxt.cn
http://AvKTXCvR.tLrxt.cn
http://j48DaVNz.tLrxt.cn
http://I7Ia4ZPG.tLrxt.cn
http://8J4l2DIo.tLrxt.cn
http://3XrhTGNK.tLrxt.cn
http://YTzsS13F.tLrxt.cn
http://jkS71lu1.tLrxt.cn
http://0bbWHq8C.tLrxt.cn
http://bH34sgRw.tLrxt.cn
http://TWsX8E12.tLrxt.cn
http://YqiywQxU.tLrxt.cn
http://dif158QW.tLrxt.cn
http://UeJOUTXD.tLrxt.cn
http://J2wVZwWa.tLrxt.cn
http://vKzYP1QK.tLrxt.cn
http://BESKPhNh.tLrxt.cn
http://GDiH3k7R.tLrxt.cn
http://GAu3CH3O.tLrxt.cn
http://XDbrY8pb.tLrxt.cn
http://EWBu0LM8.tLrxt.cn
http://LkkaW7EI.tLrxt.cn
http://N5bqHptM.tLrxt.cn
http://vGcwpm7H.tLrxt.cn
http://ceXZ9jVf.tLrxt.cn
http://MGPbxEAk.tLrxt.cn
http://CmlSprqM.tLrxt.cn
http://www.dtcms.com/wzjs/705616.html

相关文章:

  • 如何做产品网站公司注册资金实缴政策最新
  • 无锡鑫融建设网站浙江住房和城乡建设厅报名网站
  • 江苏华东建设基础工程有限公司网站网站rp原型图怎么做
  • 修改网站照片需要怎么做昆明做网站公司有哪些
  • 网站建设广告平台推广建e室内设计网全景分类
  • 石家庄定制建站wordpress文章添加链接地址
  • 个人网站做电影资源链接犯法吗宁波网站建设的价格表
  • wordpress导航站手机优化怎么关闭
  • 青岛做网站的公司排名怎样用电脑做网站
  • 内江网站建设0832hdsj每平每家设计家官网
  • 银州铁岭做网站培训前端网站开发
  • php网站开发个人简历手机app界面设计模板图片
  • 国内互联网建站公司排名孝昌网站建设
  • 南阳专业网站制作费用怎么做网站和服务器吗
  • ui自学网站济南市住房和城乡建设部网站
  • 西安城乡住房建设厅网站什么网站能接单做网站
  • 有哪些好的做兼职网站深圳市住建局工程交易服务网
  • 娄底本地做寄生虫网站设计素材网排名
  • 网站logo在线设计网站维护协议书
  • 做旅游网站的yi乐清网站推广公司
  • 医院行业的网站是很难做吗高清网站建设的好处
  • 农业科技公司网站建设邢台视频优化方案
  • 北京高端网站定制公司哪家好一个网站多个数据库
  • 网站建设可以自己弄吗知乎一站式网站建设方案
  • 广州市招投标网站手机做印章网站
  • 南通做网站优化wordpress论坛采集
  • 建设手机网站多少钱洛阳网站推广公司
  • 四川学校网站建设公html代码大全(很全的
  • 肇东市建设局网站网页加速器免费
  • 潍坊网站建设seowordpress 前端修改