spring面试:二、bean的生命周期和循环引入问题(三级缓存、@Lazy)

news/2025/1/11 4:06:12/

bean的生命周期

Spring容器在进行实例化时,会将xml配置的的信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean。
其中比较重要的是:

  • beanClassName:bean 的类名
  • initMethodName:初始化方法名称
  • properryValues:bean 的属性值
  • scope:作用域
  • lazyInit:延迟初始化
    在这里插入图片描述
    在这里插入图片描述

循环引入

建议去看https://www.bilibili.com/video/BV1yT411H7YK?p=40

在这里插入图片描述
在这里插入图片描述

解决方案

如果是set注入引起的循环依赖,spring提供的三级缓存大部分都可以解决。
如果是构造方法中就存在循环依赖,那么用@Lazy解决。

三级缓存

在这里插入图片描述

若只有一级缓存

在这里插入图片描述

二级缓存作用

在这里插入图片描述
但是二级缓存无法处理代理对象,因此有了三级缓存的存在。

二级缓存最核心的作用是,通过A的对象工厂创建代理对象,如果是多例的话,就会创建多个。直接把他们都放到二级缓存中方便管理且每次需要的话直接从里面拿就好了

三级缓存

在这里插入图片描述

源码(个人学习存档用)

//单实例对象注册器
public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry {private static final int SUPPRESSED_EXCEPTIONS_LIMIT = 100;private final Map<String, Object> singletonObjects = new ConcurrentHashMap(256);private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap(16);private final Map<String, Object> earlySingletonObjects = new ConcurrentHashMap(16);
}

@Lazy

在这里插入图片描述


http://www.ppmy.cn/news/1270915.html

相关文章

安装鸿蒙开发者工具DevEco Studio

1.进入官网下载工具 https://developer.harmonyos.com/cn/develop/deveco-studio/ 选择您电脑对应的系统下载即可 2.安装 很简单直接点击“next”,此处不做赘述 3.配置环境 安装完成后&#xff0c;打开DevEco Studio 会提示配置环境。安装node.js和ohpm 如果不小心关了&a…

代码随想录算法训练营第二十六天(回溯算法篇)|39. 组合总和,40. 组合总和Ⅱ

39. 组合总和 题目链接&#xff1a;39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 题目内容&#xff1a;给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0…

[蓝桥杯刷题]合并区间、最长不连续子序列、最长不重复数组长度

前言 ⭐Hello!这里是欧_aita的博客。 ⭐今日语录: 成功的关键在于对目标的持久追求。 ⭐个人主页&#xff1a;欧_aita ψ(._. )>⭐个人专栏&#xff1a; 数据结构与算法 数据库 文章目录 前言合并区间问题&#x1f4d5;现实应用大致思路代码实现代码讲解 最长不连续子序列&a…

vue2.0使用vue-pdf(简单版本)

1.引入vue-pdf&#xff08;vue-pdf版本&#xff1a;4.3.0&#xff0c;vue版本&#xff1a;2.6.14&#xff09; npm install --save vue-pdf2.引入本地文件&#xff08;放public文件夹下用于测试。后期用接口返回的地址&#xff09; 111.pdf&#xff1a;自己随意生成的一个 3…

美容店预约小程序搭建指南

随着互联网的发展&#xff0c;越来越多的传统行业开始尝试将业务与互联网相结合&#xff0c;以提供更加便捷、高效的服务。美容行业也不例外。本文将通过使用第三方制作平台&#xff0c;如乔拓云网&#xff0c;指导您如何搭建一个美观实用的美容店预约小程序&#xff0c;帮助您…

用提问的方式来学习:冯·诺伊曼体系结构与操作系统OS

学习冯诺伊曼体系结构之前&#xff0c;我们要本着两个问题来学习&#xff1a; 什么是冯诺伊曼体系结构&#xff1f;为什么要有冯诺伊曼体系结构&#xff1f; 一、冯诺伊曼体系结构 1. 什么是冯诺伊曼体系结构&#xff1f; 那我们就先来回答一下什么是冯诺伊曼体系结构&#x…

(SpringBoot)第十一章:SpringBoot 统一功能处理(AOP实战)

文章目录 一:用户登录权限验证(1)传统用户登录验证(2)使用原生Spring AOP进行用户登录验证(3)Spring 拦截器A:自定义拦截器B:拦截器实现原理①:概述②:源码分析(4)补充:统一访问前缀的添加二:统一异常处理三:统一数据返回格式Spring AOP使Spring Boot统一功能处…

Vue3el-upload 实现在组建之外提供一个上传按钮

有这么一个需求&#xff0c;在使用el-upload组件进行文件上传的时候&#xff0c;除了组件默认提供的上传按钮&#xff0c;还要在列表的最前面自定义的加一个上传按钮&#xff0c;点击这个自定义的上传按钮要实现和点击默认的上传按钮同样的全套的上传流程 默认的&#xff1a; …