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

孙哥Spring源码第20集

第20集 refresh()-invokeBeanFactoryPostProcessor 四-处理@Configuration下的@Bean生成代理对象

【视频来源于:B站up主孙帅suns Spring源码视频】【微信号:suns45】

1、二行InvokeBeanFactoryPostProcessors的作用

image-20230513111435210 image-20230513112024591

registryProcessors:处理的是手动添加和自动注解
regularPostProcessors:在这里的话 只会处理手动添加的 不会处理非注解添加的。
其实正常情况下是 只会调用ConfiguraitonClassPostProcessor的postProcessBeanFactory

2、为什么要对@Configuration修饰的配置bean创建代理?为啥两个user一样?

image-20230513094811544

1、因为要获取Spring中所有以@Configuration注解所修饰的@Bean
2、把配置@Bean的BeanDefinition进行替换,替换成代理类型这样可以根据@Bean的配置去生成对应的BeanDefinition。

image-20230513222220858

3、InvokeBeanFactoryPostProcessors到底创建对象了吗

没有,创建对象是在后面,这里只是处理@Configuration下的@Bean

4、ImportAwareBeanPostProcessor的作用

作用:可以获取@Configuration下的@Import的A类,importMetadata就是A.class。

image-20230513103822955

5、为啥其他BeanPostProcessor是在this()创建Reader的时候创建的?而ImportAwareBeanPostProcessor是在这个地方呢?

ConfigurationClassPostProcessor对相应@Import类进行了解析,所以对@Import也放在了这个里面来处理。
前面把@import都处理完了,在ImportAwareBeanPostProcessor这个地方会更加安全,因为它已经知道@Import已经处理完了。

6、总结

image-20230514011033826
  • 主要讲了两个InvokeBeanFatoryPostProcessor的作用,其实正常情况下你不手动添加或者注解添加BeanFactoryPostProcessor一般只会调用ConfiguraitonClassPostProcessor的postProcessBeanFactory
  • 第一个invokeBeanFactoryPostProcessors:处理的处理的是registryProcessors手动添加的和注解添加的BeanFactoryPostProcessor以及它的子接口BeanDefinitionRegistryPostProcessor
  • 第二个invokeBeanFactoryPostProcessors:在这里的话 只会处理regularPostProcessors意思就是手动添加的BeanFactoryPostProcessor不会处理非注解添加的。
    • 什么是手动添加的?
    • image-20230514011509852
  • 其实正常情况下是 只会调用ConfiguraitonClassPostProcessor的postProcessBeanFactory
    • 接下来就是 找到@Configuartion下的所有@Bean,
    • 接着就是使用Cglib生成代理
    • 这就是为什么@Bean里面明明是new的,但是获取多次还是同一个对象的原因。

相关文章:

孙哥Spring源码第20集

第20集 refresh()-invokeBeanFactoryPostProcessor 四-处理Configuration下的Bean生成代理对象 【视频来源于:B站up主孙帅suns Spring源码视频】【微信号:suns45】 1、二行InvokeBeanFactoryPostProcessors的作用 registryProcessors:处理的…...

【计算机网络】HTTP(上)

文章目录 1.HTTP概念2. URLurlencode 和 urldecode转义规则 3. HTTP的宏观理解HTTP的请求HTTP的响应 4. 见一见HTTP请求和响应请求报头 1. 模拟一个简单的响应response响应报头 2. 从路径中获取内容ReadFile函数的实现 3.不同资源进行区分反序列化的实现ReadOneLine函数的实现P…...

Maven学习记录

一、Maven是什么 简单来说Maven是一个标准化的java管理和构建工具,它提供了一系列规范,包括项目结构,构建流程(编译,测试,打包,发布……),依赖管理等。 标准化就是定下…...

H5游戏开发H5休闲小游戏定制H5软件定制

H5游戏是一种运行在网页浏览器中的HTML5技术开发的游戏。H5休闲小游戏通常具有简单的玩法,易于上手,适合快速的娱乐。以下是开发H5休闲小游戏的一般步骤: 1. 制定游戏开发概念: 确定H5游戏开发的主题和玩法。休闲小游戏通常应该…...

Spring基础及IoC容器的理解

Spring概念: 通常所说的Spring指的是Spring Framewprk(Spring框架),它是一个开源的框架。用一句话概括就是:Spring是包含了众多工具方法的IoC容器。 什么是容器? 容器是用来容纳某种物品的装置,在之前的学习中&…...

护网行动为什么给的钱那么多

因为护网行动是国家应对网络安全问题所做的重要布局之一。 随着大数据、物联网、云计算的快速发展,愈演愈烈的网络攻击已经成为国家安全的新挑战。国家关键信息基础设施可能时刻受到来自网络攻击的威胁。网络安全的态势之严峻,迫切需要我们在网络安全领…...

软考知识汇总-计算机系统

文章目录 1 计算器 1 计算器 算术逻辑单元(ALU):运算器重要组成部件,负责处理数据,实现对数据的算数运算和逻辑运算。累加寄存器(AC):简称累加器,为ALU提供数据并暂存运…...

OpenCV 11(图像金字塔)

一、 图像金字塔 **图像金字塔**是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说, 图像金字塔是同一图像不同分辨率的子图集合. 图像金字塔最初用于机器视觉和图像压缩。其通过梯次向下采…...

Linux学习笔记-Ubuntu系统用户、群组、权限管理

一、概述 本文记录Ubuntu系统下通过命令操作用户账户进行管理。 Ubuntu系统版本: Linux ubuntu 5.15.0-1034-raspi #37-Ubuntu SMP PREEMPT Mon Jul 17 10:02:14 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux 注:查看系统版本号的指令如下 uname -…...

文章预览 安防监控/视频存储/视频汇聚平台EasyCVR播放优化小tips

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码H.264、平台级联等。为了便于用户二次开发、调用与集成,…...

Nand Flash的特性及烧录问题

目录 前言 一 Nand flash的特性 1 存储结构 2 OOB区域 3 位翻转 4 坏块及ECC 二 Nand系统裸片量产烧录 1 坏块处理策略 2 分区(Partition) 3 纠错码(Error Correction Codes,ECC) 4. 擦除坏块 🎈个人主页🎈:linux_嵌入式…...

【React 】useLayoutEffect 和 useEffect的区别

useLayoutEffect和useEffect是React中常用的两个Hook,它们的主要区别在于触发时机。 useEffect会在渲染完成后异步执行,不会阻塞浏览器的绘制操作。它适用于需要在组件渲染后执行副作用的情况,例如数据的获取、订阅事件等。它不会阻止屏幕更新…...

oracle数据库常见的优化步骤与脚本

要优化 Oracle 数据库的性能,可以按照以下步骤进行: 1. 性能分析和诊断:首先,使用 Oracle 提供的性能分析工具(如 AWR 报告、ASH 报告)对数据库进行分析和诊断。这些报告可以帮助您确定数据库的性能瓶颈和潜在问题。 2. 优化 SQL 查询语句:针对频繁执行的 SQL 查询语句…...

并发内存池(C++)

项目简介 这个项目是实现了一个高效的并发内存池。它的原型的goggle的一个开源项目tcmalloc,即thread-cache malloc(线程缓存的malloc),实现了高效多线程的内存管理,可实现对系统提供的内存分配函数malloc和free的替代…...

本地起一个VUE 前端项目

#安装 安装 Vue CLI 3: Vue CLI是一个用于创建和管理Vue项目的命令行工具 npm install -g vue/cli#查看更详细的告警信息 npm install -g vue/cli --verbose#检查项目的依赖关系 ,保持项目的依赖关系最新和安全 npm audit npm audit fix#查看版本 vue --version#创建…...

Python爬虫:Selenium的介绍及简单示例

Selenium是一个用于自动化Web应用程序测试的开源工具。它允许开发人员模拟用户在浏览器中的交互行为,以便自动执行各种测试任务,包括功能测试、性能测试和回归测试等。Selenium最初是为Web应用程序测试而创建的,但它也可用于Web数据抓取和其他…...

每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题

食用指南:本文为作者刷题中认为有必要记录的题目 前置知识:回溯法经典问题之全排列 ♈️今日夜电波:带我去找夜生活—告五人 0:49 ━━━━━━️💟──────── 4:59 …...

python循环遍历字典: title_content_list.append([key, value])print(ti

示例示例Python循环遍历字典的方法有以下几种:使用for...in循环: Python循环遍历字典的方法有以下几种: 1. 使用for...in循环: python dict {name:Tom, age:20, gender:male} # 遍历所有的键 for key in dict:print(key) # 遍…...

Redis List类型命令 - Set类型命令 - SortedSet类型命令

目录 List类型 什么是双向链表呢? List类型的特征: List的常用命令 LPUSH和RPUSH的区别: LPOP和RPOP的区别: LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star end:返回一段距离范围内所有的元素 BLPOP…...

等级保护 —— 安全控制点,安全要求

等级保护 —— 安全控制点,安全要求 安全物理环境: 物理位置选择 a)机房场地应选择在具有防震、防风和防雨等能力的建筑内; 1)核查是否有建筑物抗震设防审批文档。2)核查是否有雨水渗漏的痕迹。3&#…...

突破Windows权限限制:TrustedInstaller提权工具完全指南

突破Windows权限限制:TrustedInstaller提权工具完全指南 【免费下载链接】LeanAndMean snippets for power users 项目地址: https://gitcode.com/gh_mirrors/le/LeanAndMean 作为系统管理员或高级用户,你是否曾因"拒绝访问"而无法修改…...

别再为XCode证书头疼了!Unity打包iOS App的保姆级避坑指南(含iOSDeviceSupport下载)

Unity打包iOS应用终极避坑手册:从Xcode证书到真机调试全链路解决方案 每次看到Unity打包iOS时Xcode弹出的红色错误提示,是不是感觉血压瞬间飙升?作为经历过上百次打包踩坑的老司机,我决定把那些官方文档从不提及的"隐藏关卡&…...

MobaXterm远程连接:管理Baichuan-M2-32B-GPTQ-Int4服务器

MobaXterm远程连接:管理Baichuan-M2-32B-GPTQ-Int4服务器 1. 为什么选择MobaXterm来管理大模型服务器 部署Baichuan-M2-32B-GPTQ-Int4这样的医疗增强推理模型,通常需要在Linux服务器上运行vLLM或SGLang等推理引擎。这类服务对系统资源要求高&#xff0…...

3个高效解决Atlas OS中Xbox登录问题的终极技巧

3个高效解决Atlas OS中Xbox登录问题的终极技巧 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atlas Atlas…...

AI辅助数据库设计:让快马平台智能分析ER图,推荐并生成优化后的SQL代码

最近在做一个员工管理系统的数据库设计,发现ER图的设计和SQL代码生成其实是个挺费脑子的活儿。好在现在有了AI辅助工具,整个过程变得轻松多了。今天就用一个实际案例,分享一下如何用智能工具优化数据库设计。 初始ER图分析 系统最初的设计很简…...

蚕豆剥豆机设计(机械原理设计)【设计说明书+机构简图+SW三维+stp通用格式+运动仿真】 备注:此份资料没有CAD装配

蚕豆剥豆机作为农业机械化的重要工具,其核心作用在于通过机械结构替代人工操作,显著提升剥豆效率并降低劳动强度。其设计需综合考量豆荚的物理特性、剥壳力传递路径及豆粒完整性保护等关键因素。机械原理设计以连杆机构、凸轮机构及夹持机构为基础&#…...

MongoDB从零基础搭建到实战

MongoDB从零基础搭建到实战 MongoDB作为当下最流行的开源文档型NoSQL数据库,凭借灵活的文档结构、高扩展性和易用性,成为前后端开发、大数据存储、云原生项目的首选数据库之一。相比传统关系型数据库,它无需严格预定义表结构,适配…...

openclaw喂饭教程!在 Linux 环境下快速完成安装、初始化与 Web UI 配置

基础示例:单工作表 Excel 转 TXT 以下是将一个 Excel 文件中的第一个工作表转换为 TXT 的完整步骤: 1. 加载并读取Excel文件 from spire.xls import * from spire.xls.common import * workbook Workbook() workbook.LoadFromFile("示例.xlsx"…...

如何用pose-search在5分钟内构建智能人体姿态分析系统

如何用pose-search在5分钟内构建智能人体姿态分析系统 【免费下载链接】pose-search x6ud.github.io/pose-search 项目地址: https://gitcode.com/gh_mirrors/po/pose-search 你是否曾经想过为你的应用添加实时人体姿态识别功能,但又担心技术门槛太高&#x…...

停止健身房“赎罪”:把动作揉进日常,比发狠管用

健身房的惩罚 vs 生活中的律动 专栏:清醒日常 | 重新认识这副皮囊 (02) 老哥,今天咱们聊聊一个挺普遍,但很少有人愿意戳破的现象。 你有没有过这种经历:白天在公司极其憋屈地坐了十个小时,改了八遍PPT,晚…...