Bean三级缓存

2023-05-16

一、核心步骤

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

提前引用进行动态代理

在这里插入图片描述

后置处理器进行动态代理

在这里插入图片描述

二、具体步骤

1.获取bean

  1. AbstractBeanFactory#doGetBean
    在这里插入图片描述

2.第一次去单例池查询bean

  1. 最终调用:DefaultSingletonBeanRegistry#getSingleton(java.lan
    g.String, boolean)
    在这里插入图片描述

3.获取不到bean 创建Bean

AbstractAutowireCapableBeanFactory#createBean)
在这里插入图片描述

4.创建bean实例

AbstractAutowireCapableBeanFactory#createBeanInstance
在这里插入图片描述

5. 填充属性:

AbstractAutowireCapableBeanFactory#populateBean
1.准备填充、2.解决自动填充、3.填充属性
在这里插入图片描述

6.初始化

AbstractAutowireCapableBeanFactory#initializeBean(.String, Object,RootBeanDefinition)
在这里插入图片描述

6.1 初始化步骤

在这里插入图片描述

7 aop处理

后置处理(触发动态代理)
AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization
在这里插入图片描述

创建动态代理AbstractAutoProxyCreator#postProcessAfterInitialization
在这里插入图片描述

进行创建动态代理:AbstractAutoProxyCreator#createProxy
在这里插入图片描述

三、整体运行栈

#获取Bean
AbstractBeanFactory.doGetBean
#第一次查询
DefaultSingletonBeanRegistry.getSingleton()


#二、创建
#开始创建
AbstractAutowireCapableBeanFactory.doCreateBean
#创建实例
createBeanInstance()
#填充属性1.填充准备、2解决自动填充3、填充属性
populateBean
#初始化
initializeBean
		#填充 beanName
		invokeAwareMethods
		#前置处理
		applyBeanPostProcessorsBeforeInitialization
		#初始化方法
		invokeInitMethods
		#后置处理(AOP动态代理)
		applyBeanPostProcessorsAfterInitialization

#三、AOP处理
#后置处理触发动态代理
AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization
#创建动态代理
AbstractAutoProxyCreator#createProxy


# 四、解决循环依赖,提前引用
#提前引用
getEarlyBeanReference()
	#创建代理
	createProxy()



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bean三级缓存 的相关文章

  • 报错:Description: No bean of type ‘org.apache.shiro.realm.Realm‘ found

    springboot整合shiro的时候出现了报错 报错信息 xff1a Description No bean of type 39 org apache shiro realm Realm 39 found Action Please
  • SpringBoot中有几种定义Bean的方式?

    目录 1 64 Bean2 64 Component3 64 Controller 64 RestController 64 Service 64 Repository4 64 ControllerAdvice 64 RestControl
  • 在spring boot中使用configuration注解无法注入bean

    1 在spring boot和spring中bean注入的方式 xff0c 基于Java类配置的 xff0c 即通过configuration注解注入 xff0c 其中遇到发现在springboot中 xff0c 无法自动注入 xff0c
  • 利用MultipartFile实现文件上传

    利用MultipartFile实现文件上传 在java中上传文件似乎总有点麻烦 没 net那么简单 记得最开始的时候用smartUpload实现文件上传 最近在工作中使用spring的MultipartFile实现文件上传 感觉挺简单 在这
  • 什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?

    前言 在Java开发中经常遇到这些概念问题 有的可能理解混淆 有的可能理解不到位 特此花了很多时间理顺了这些概念 不过有些概念实际开发中并没有使用到 可能理解还不够准确 只能靠后续不断纠正了 1 什么是POJO POJO Plain Old
  • spring之bean注入的意义

    简而言之就是 首先 service注解在当前类的上边 表示在当前类是spring管理的一个bean 使用 autowired 将另外一个A类的实体bean注入到当前类中 让当前类具备那个A类的功能
  • Bean name用法

    Spring的bean中有name属性 可以用来区分两个相同 部分属性不一样 的bean 最近我在做influxdb多数据源的时候用到 所以这里已influxdb为示例 仅供参考 看代码 Bean name influx1 public I
  • Spring注入Bean的七种方式

    通过注解注入Bean 背景 我们谈到Spring的时候一定会提到IOC容器 DI依赖注入 Spring通过将一个个类标注为Bean的方法注入到IOC容器中 达到了控制反转的效果 那么我们刚开始接触Bean的时候 一定是使用xml文件 一个一
  • Bean销毁之前的行为

    与上一篇中的定制初始化行为相似 Spring也提供了两种方法定制Bean销毁之前的特定行为 如下 1 使用destroy method属性 2 实现DisposableBean接口 该接口中提供了一个方法 void destroy thro
  • 自动表单数据封装到javaBean中

    页面表单数据的自动封装到javaBean中 先定义一个Bean类 package com test public class Bean private String name private Integer sex public Strin
  • SSM框架学习记录-Spring_day01

    1 核心概念 当前项目中的问题 下面代码的实现十分简单 但是业务层需要调用数据层的方法 就要在业务层new数据层的对象 如果数据层的实现类发生变化 业务层的代码也需要跟着改变 意味着要编译打包和重新部署 数据层实现 public class
  • createBean方法详解

    前言 createBean是创建Bean的主要方法 该方法位于 AbstractBeanFactory的doGetBean方法中的createBean调用 createBean方法流程图 createBean源码解析 protected O
  • 【编程语言】java--jsp--javabean中的scope用法小解

    javabean中的scope用法小解 1 scope取值page JSP分配给每个bean是互不相同的 虽然bean的功能是一样 但是占据不同的内存单元 bean的有效范围是当前页面 2 scope取值session JSP分配给每个be
  • org.springframework.beans.factory.BeanCreationException的问题所在!!

    今天一不小心弄出的小问题 严重 Exception sending context initialized event to listener instance of class org springframework web contex
  • Jsf与Spring的整合原理

    Jsf做为Web框架 Spring做为业务层框架 两者可以结合起来用 只要在faces config xml中做一个很简单的配置
  • JSP语法:setProperty

    JSP语法 13 setProperty 时间 2009 03 21 20 37 来源 作者 CSDN IE QQ 百度 Google POCO 新浪 365Key 天极 和讯 博拉 Live 奇客 收客 饭否 叽歪
  • please remember me(auto login)

    记住我 用户自动登录的实现 auto login 一 什么是用户自动登录 对于我们的网站向已注册用户提供某些专门的服务 比如网上购物 在线下载 收费浏览等等 就会要求用户在使用这些服务之前进入登录页面 输入用户名和密码 并进行验证 如果用户
  • SpringBoot八种bean的加载方式

    目录 第一种bean的加载方式 配置文件 第二种加载bean方式 注解和扫描 创建第三方的bean对象 第三种加载bean方式 不使用配置文件 扩展 bean的加载方式扩展FactoryBean lt gt 扩展 ImportResourc
  • Spring(三):JavaBean的生命周期

    JavaBean的生命周期 一 基本概念 bean 就是由IOC 容器初始化 装配及管理的对象 Spring中的bean默认都是单例的 那么单例Bean在多线程程序下如何保证线程安全呢 Spring的单例是基于BeanFactory也就是S
  • Spring IoC依赖注入的实现

    看了 spring技术内幕 的第二章 学习了spring的IoC容器的实现 对其做了浅显地分析 依赖注入的时机 如果配置文件有配置lazy init 那么依赖注入的时机发生在用户向IoC 容器索取bean的时候 即调用beanfactory

随机推荐

  • 在C++中使用map来取代很多个if else和switch

    在C 43 43 中使用map来取代很多个if else和switch 利用map中的key和value键值对来取代if else效率会好不少 span class token macro property span class token
  • C++类:类中的静态属性和函数、常量函数与常对象、类在内存中的存储

    静态属性 静态成员包括静态成员属性 静态成员函数 一个属性一旦设置为静态 xff0c 那么整个程序中就独其一份 如上所示 xff0c 之前p m A的值是100 使用p2 m A更改了该值为200后 xff0c 即使再用p m A去调用 x
  • ADRC学习心得(持续更新)

    两年前第一次接触到PID觉得很高深 xff0c 很神奇 xff1b 后来逐渐觉得单纯的PID小儿科了 xff0c 又了解到专家PID xff0c 模糊PID xff0c 神经网络PID这些改进算法 xff0c 再后来又知道了ADRC xff
  • 四/六旋翼迷你无人机设计制造(一)硬件设计制作

    四旋翼 xff0c 小飞机 飞到东 xff0c 飞到西 上日天 xff0c 下怼地 我的飞机真神奇 鲁迅 很早就有弄个小飞机自己玩的想法了 xff0c 因为疫情拖到现在 不过感谢时间 xff0c 过滤掉了很多不成熟的想法 xff0c 也有足
  • SLAM14讲第七讲习题10:Ceres实现ICP优化

    很好的学习ceres的习题 难度很低 容易入手 ceres结构体构造 struct ICPCeres 64 brief Construct a new ICPCeres object 64 param uvw 当前帧3d点 64 param
  • ZED2i相机在ROS2上运行vins排坑与用docker运行Kalibr标定ZED2i相机

    按照ZED官网提供的方式ZED2i的SDK和ros2 wrapper之后 还有很多工作要做才能让ZED成功运行稳定的VINS 1 ZED2i用Kalibr标定IMU和相机 由于我的电脑怎么装Kalibr都装不上 说是啥boost这个库版本不
  • 解决MobaXterm无法连接虚拟机问题总结

    一 说明 ubuntu拒绝root ssh远程登录通常情况是ssh设置了禁止root远程登录 xff0c 解决办法就是 xff1a 修改ssh配置 xff0c 然后重启ssh服务即可 二 检查是否安装ssh远程登陆模块 命令 xff1a s
  • 安装spinningup填坑ERROR: Could not build wheels for mpi4py which use PEP 517

    深度强化学习教程 xff1a Spinning Up项目中文版 Spinning Up 文档 ERROR Failed building wheel for mpi4py Failed to build mpi4py ERROR Could
  • MarkDown插入图片调整大小

    一定要注意修改格式的时候要加空格 xff0c 例如 Alt https avatar csdn net 7 7 B 1 ralf hx163com jpg 61 100x jpg和 61 之间的空格不能没有 具体参照 xff1a https
  • Linux初学记录

    编写一个名为iffile程序 xff0c 它执行时判断 bin目录下date文件是否存在 xff1f bin bash fname 61 bin date if test f fname then echo exist fi 123456
  • tensorflow的奇妙下划线,形如(_,变量)变量命名操作的解释

    问题的发现 今天在尝试实现 深度学习之TensorFlow入门 原理与进阶实战 的时候书写了一段代码 xff0c 其中有一行代码我甚是纠结了半天 xff0c 代码如下 xff1a span class token punctuation s
  • zynq实现视频动态字符叠加OSD,提供2套工程源码和技术支持

    目录 1 网上同行的OSD方案 太low 2 本方案OSD的优势3 HLS实现方案4 OSD延时和资源占用情况5 工程1 xff1a zynq7100实现字符叠加6 上板调试验证7 福利 xff1a 工程源码获取 1 网上同行的OSD方案
  • 向日葵连接已断开的解决办法

    方法一 打开ubuntu系统的终端 xff0c 依次输入如下命令 xff1a sudo apt get update sudo apt get upgrade sudo apt install lightdm 重启电脑 方法二 xff08
  • UDP传输图片(分包)

    前提 xff1a 需要了解QUdp的简单通信 xff0c 比如收发个字符串 QP ixmap图片类 xff0c 以此类来加载图片 Q B uffer和Q B yteArray来记录数据 memcpy函数的用法 分包概念 xff1a 举个例子
  • 结构型设计模式(七种)

    3 结构型设计模式 结构型模式描述如何将类或对象按某种布局组成更大的结构 它分为类结构型模式和对象结构型模式 xff0c 前者采用继承机制来组织接口和类 xff0c 后者采用组合或聚合组合对象 由于组合关系或聚合关系比较继承关系耦合度低 x
  • IDEA+Log4j2 设置控制台打印彩色日志

    在Log4j 2 10以前的版本 xff0c pattern中配置 highlight属性是可以正常打印彩色日志的 例如 xff1a pattern 34 d yyyy MM dd HH mm ss SSS highlight 5level
  • weex打包安卓艰苦之路

    weex打包安卓 一 配置安卓环境 下载安卓SDK配置ANDROID HOME配置 ANDROID HOME tools android h 检查是否配置成功 二 weex的安装使用 一 weex简介以及开发前提 1 简介 官网的解释为We
  • docker命令

    Docker命令详解 语法 docker run OPTIONS IMAGE COMMAND ARG Usage Run a command in a new container 中文意思为 xff1a 通过run命令创建一个新的容器 xf
  • PX4 mixer load

    mixer load dev pwm output0 fs microsd mixer ttt mix 启动一个自定义的mixer 系统默认从 etc mixers加载mixer 如果在 fs microsd etc mixers有相同名称
  • Bean三级缓存

    一 核心步骤 提前引用进行动态代理 后置处理器进行动态代理 二 具体步骤 1 获取bean AbstractBeanFactory doGetBean 2 第一次去单例池查询bean 最终调用 xff1a DefaultSingletonB