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

广州自适应网站建设毕节地seo

广州自适应网站建设,毕节地seo,免费招聘网站有哪些平台,织梦系统网站地图模板下载1、Spring三级缓存是什么,过程是怎么样的? Spring 中的三级缓存主要用于单例 Bean 的生命周期管理,特别是在循环依赖时,它通过不同阶段暴露 Bean 实例来确保依赖注入的顺利完成。缓存的内容如下: 一级缓存 (singleton…

1、Spring三级缓存是什么,过程是怎么样的?

Spring 中的三级缓存主要用于单例 Bean 的生命周期管理,特别是在循环依赖时,它通过不同阶段暴露 Bean 实例来确保依赖注入的顺利完成。缓存的内容如下:

  1. 一级缓存 (singletonObjects)存储完全初始化的单例 Bean。该缓存中存储的是已经完成初始化的 Bean 对象,包括所有的属性注入和生命周期回调方法(如 @PostConstruct)都已完成。

  2. 二级缓存 (earlySingletonObjects)存储实例化但尚未完成所有初始化步骤的 Bean 引用。也就是 Bean 已经完成了实例化,并完成了依赖注入(如字段注入),但可能还没有执行初始化方法(如 @PostConstruct)。二级缓存用于解决循环依赖问题,当需要注入的 Bean 还没有完全初始化时,可以先返回该 Bean 的早期引用。

  3. 三级缓存 (singletonFactories)存储的是创建 Bean 的工厂(ObjectFactory),而不是直接存储 Bean 实例。这些工厂延迟返回真正的 Bean 实例,直到它们完成初始化。三级缓存用于处理 循环依赖 的核心,当一个 Bean 处于创建过程中,另一个 Bean 依赖它时,可以从三级缓存中获取一个工厂对象,该工厂会在 Bean 完全初始化后,生成一个完整的 Bean 实例。

2、从缓存中获取单例对象

2.1、代码解读

public Object getSingleton(String beanName, boolean allowEarlyReference) {// 1. 检查一级缓存,获取已完成初始化的 BeanObject singletonObject = this.singletonObjects.get(beanName);if (singletonObject == null && this.singletonsCurrentlyInCreation.contains(beanName)) {// 2. 如果一级缓存没有,且 Bean 正在创建中,则检查二级缓存singletonObject = this.earlySingletonObjects.get(beanName);if (singletonObject == null && allowEarlyReference) {// 3. 如果二级缓存也没有,允许提前引用时,检查三级缓存ObjectFactory<?> singletonFactory = this.singletonFactories.get(beanName);if (singletonFactory != null) {// 4. 从三级缓存中获取 Bean 实例singletonObject = singletonFactory.getObject();// 5. 将生成的对象放入二级缓存this.earlySingletonObjects.put(beanName, singletonObject);// 6. 从三级缓存中移除工厂this.singletonFactories.remove(beanName);}}}// 7. 返回从缓存中获取的单例对象return singletonObject;
}

2.2、执行流程

  1. 一级缓存 (singletonObjects):
    检查一级缓存,获取完全初始化的 Bean。
    如果一级缓存中存在该对象,则直接返回。

  2. 二级缓存 (earlySingletonObjects):
    如果一级缓存中没有找到该对象,且该对象正在创建过程中(this.singletonsCurrentlyInCreation),则检查二级缓存。
    如果二级缓存中存在早期暴露的 Bean,则直接返回。

  3. 三级缓存 (singletonFactories):
    如果二级缓存中也没有,并且允许提前引用(allowEarlyReference 为 true),则从三级缓存中获取工厂对象(ObjectFactory)。
    调用 ObjectFactory.getObject() 方法生成 Bean 实例。
    将生成的实例放入二级缓存,同时从三级缓存中移除对应的工厂。

http://www.mmbaike.com/news/70157.html

相关文章:

  • 做食品企业网站的费用免费行情网站的推荐理由
  • 做的网站百度不收录网络营销案例分享
  • 韶关哪里做网站免费游戏推广平台
  • 深圳市做网站的有那些公司热搜榜百度一下你就知道
  • 怎么知道网站关键词的搜索来源关键词竞价排名
  • 可以做兼职的网站有哪些工作新媒体运营培训班
  • 房子网站有哪些交换友情链接的条件
  • 什么网站可以做推广的seo工具不包括
  • wordpress 微信文章seo推广多少钱
  • html5网站设计欣赏东莞网络推广营销公司
  • 定制网络推广计划太原seo快速排名
  • 网站可以做信息抓取吗百度一下你就知道了 官网
  • 公司做网站提供产品加盟费设计培训学院
  • 织梦网站栏目谷歌推广一年多少钱
  • 房地产做网站网络营销研究背景及意义
  • 网站优化方法页面中超最新积分榜
  • 做网站图片属性志鸿优化设计电子版
  • 风中有朵雨做的云在线网站百度如何快速收录
  • 做a的视频在线观看网站四川seo多少钱
  • html5 公司网站手游cpa推广平台
  • 网站域名要钱吗一份完整的品牌策划方案
  • 合肥网站模板建站宁波网站推广代运营
  • win2003 网站服务器网络推广团队
  • 怎么接网站来做网络广告类型
  • 超越时空网上书城网站建设方案整站优化案例
  • 网站制作工资公众号代运营
  • 物流公司网站建设方案关键词seo排名怎么选
  • 做跨境网站注意电商网站定制开发
  • 二手交易网站建设方案pptcrm客户管理系统
  • 做lol直播网站太原网站seo