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

精美网页网站seo的优化怎么做

精美网页,网站seo的优化怎么做,高邮做网站,网站开发都需要哪些图Spring的三级缓存机制主要用于解决单例Bean的循环依赖问题。其核心在于提前暴露Bean的引用,允许未完全初始化的对象被其他Bean引用。以下是三级缓存的详细说明及其解决循环依赖的原理: 三级缓存结构 一级缓存(singletonObjects) 存…

Spring的三级缓存机制主要用于解决单例Bean的循环依赖问题。其核心在于提前暴露Bean的引用,允许未完全初始化的对象被其他Bean引用。以下是三级缓存的详细说明及其解决循环依赖的原理:


三级缓存结构

  1. 一级缓存(singletonObjects

    • 存储完全初始化的单例Bean。
    • 当Bean完成实例化、属性注入和初始化后,最终存储于此。
    • 其他Bean通过此缓存获取完全可用的Bean实例。
  2. 二级缓存(earlySingletonObjects

    • 存储未完全初始化的Bean(仅实例化,未完成属性注入和初始化)。
    • 用于解决循环依赖时,提前暴露Bean的早期引用。
  3. 三级缓存(singletonFactories

    • 存储Bean的ObjectFactory(工厂对象)。
    • 当需要提前暴露 Bean 时,Spring 会将 ObjectFactory 放入此缓存,而不是直接暴露尚未初始化的 Bean 实例
    • 当Bean实例化后(构造方法调用后),将生成Bean的工厂存入此缓存。
    • 工厂的作用是按需生成早期引用,可能包含AOP代理逻辑。

解决循环依赖的流程

BeanA依赖BeanBBeanB依赖BeanA为例:

  1. 创建BeanA

    • 实例化BeanA(调用构造方法),得到一个原始对象。
    • BeanAObjectFactory存入三级缓存singletonFactories)。
    • 开始属性注入,发现需要BeanB
  2. 创建BeanB

    • 实例化BeanB,同样将ObjectFactory存入三级缓存。
    • 开始属性注入,发现需要BeanA
  3. 获取BeanA的早期引用

    • 三级缓存中找到BeanAObjectFactory,调用其getObject()方法。
      • BeanA需要AOP代理,工厂会生成代理对象;否则返回原始对象。
    • 将生成的早期引用存入二级缓存earlySingletonObjects),并移除三级缓存中的工厂
    • BeanB成功注入BeanA的早期引用,继续完成属性注入和初始化。
  4. 完成BeanB的创建

    • BeanB完成后,存入一级缓存singletonObjects)。
  5. 回到BeanA的创建

    • BeanA注入BeanB(此时已存在于一缓)。
    • 完成BeanA的属性注入和初始化。
    • 检查二级缓存是否存在BeanA的早期引用:
      • 如果存在,可能合并代理逻辑,最终将完整对象存入一缓,并清理二、三缓存。

为什么需要三级缓存?

  1. 分离职责

    • 一级缓存存放成品,二级缓存存放半成品,三级缓存存放生成半成品的工厂。
    • 工厂的延迟执行:确保代理逻辑在需要时才执行(如存在AOP时),避免重复创建代理对象。
  2. 解决代理对象的循环依赖

    • 若Bean需要AOP代理,三级缓存的工厂能生成代理对象,而二级缓存直接存储对象。如果只有二级缓存,无法处理代理对象的生成时机问题,可能导致注入不一致。

局限性

  1. 仅支持单例Bean

    • 原型(prototype)Bean每次创建新对象,无法通过缓存提前暴露引用,循环依赖会直接报错。
  2. 构造器注入无法解决

    • 若循环依赖通过构造器注入,Bean在实例化前无法暴露引用,导致创建失败。
  3. 需要Spring管理

    • 若Bean通过new创建或非Spring上下文管理,三级缓存机制失效。

总结

Spring通过三级缓存的协同工作,在Bean实例化后立即暴露其ObjectFactory,使得循环依赖的Bean能通过工厂获取早期引用(可能是代理对象)。这一机制巧妙地平衡了对象创建顺序与依赖注入的需求,解决了单例Bean的循环依赖问题,同时确保AOP代理的正确性。

http://www.dtcms.com/wzjs/94092.html

相关文章:

  • 网站如何做中英文双语言精美软文句子
  • 长沙企业建站销售电话人工智能培训师
  • 怎样用电脑做网站外贸接单平台网站
  • 黑白高端网站建设班级优化大师手机版下载
  • 小型电子商务网站建设与发展郑州计算机培训机构哪个最好
  • 室内设计和装修设计seo网页推广
  • 中国城乡住房建设厅网站平台关键词排名优化
  • 大连网络推广网站优化找哪家好网站应该如何推广
  • 哪些网站教你做系统网站搜索引擎优化报告
  • 网站前端工资阿里云域名注册入口官网
  • 网站建设 内容缺乏市场营销计划方案
  • 网站备案域名更改吗域名查询万网
  • 哈尔滨网络宣传与网站建设seo查询官网
  • 做电影网站要不要收费的成都seo培训
  • 青岛胶东建设国际机场网站百度在线人工客服
  • wordpress主题aware优化 英语
  • 免备案香港主机优化营商环境 提升服务效能
  • 郑州专业的网站建设抖音关键词优化排名靠前
  • 两个彩票网站做赔付东莞网络公司代理
  • 全国新农村建设网站上海网站seo外包
  • 长沙公司网站建立最近发生的新闻
  • 苏州网页建站服务商最近一周的新闻热点事件
  • wordpress 去除评论模块seo短视频网页入口营销
  • 医疗美容医院网站建设seo推广优势
  • 做推广可以在哪些网站发布软文网络广告怎么做
  • 东莞微网站建设网络运营工作内容
  • 用dw做的网站青岛网络seo公司
  • 企业建设网站的主要目的有哪些绍兴seo网站优化
  • 提示该域名为lp网站长沙seo排名外包
  • 机关网站建设前期准备工作搜索引擎优化简称