SpringBoot 配置类解析
全局流程解析

配置类解析入口

postProcessBeanDefinitionRegistry逻辑

processConfigBeanDefinitions逻辑

执行逻辑解析
执行入口
ConfigurationClassPostProcessor.processConfigBeanDefinitions()方法中的do while循环体中

循环体逻辑

parse方法调用链

doProcessConfigurationClass
- 处理内部类
- 处理
PropertySource注解 ComponentScan指定的路径进行扫描- 处理
Import注解 - 处理
ImportResource - 转换bean的方法
BeanMethod - 处理接口的默认方法
- 处理父类
核心方法解析
内部类处理
org.springframework.context.annotation.ConfigurationClassParser#processMemberClasses

PropertySource处理
org.springframework.context.annotation.ConfigurationClassParser#processPropertySource
- 用法:
@PropertySource({"demo.properties"}) - 遍历指定路径,替换占位符,加载资源
- 将资源添加到
environment中
ComponentScan处理
@ComponentScan(basePackages = ({"pkgA","pkgB"}), basePackageClasses = ({A.class, B.class})- 没设置扫描路径的话使用配置类所在路径
- 过滤顺序: excludeFilters -> includeFilters -> false
Import处理
ImportSelector.class&DeferredImportSelector.class- 处理以上两个接口实现
selectImports返回的类名数组 DeferredImportSelector接口调用优先级低于其他接口- 处理
ImportBeanDefinitionRegistrar实现中注册的bean - 处理
@Import(A.class)
ImportResource处理
@ImportResource("xyz.xml")- 将注解属性值放入
importedResources中 - 后续
loadBeanDefinitionsForConfigurationClass中加载定义的bean
BeanMethod处理

- 构造
BeanMethod对象放入配置类属性中后续处理
接口默认方法处理

父类处理
- 一: 不为null
- 二: 全路径名不以java开头
- 三: 尚末处理过
面试题
- 配置类是什么?起到什么作用?
- 请举例一些常用的配置注解?
- 介绍下SpringBoot框架对配置类的一个处理流程?
- 你能说出其中它其中的一些关键类和方法么?
- 配置类的处理一般包括哪些内容?
- 详细的一些注解处理过程?如
Import注解?
相关文章:
SpringBoot 配置类解析
全局流程解析 配置类解析入口 postProcessBeanDefinitionRegistry逻辑 processConfigBeanDefinitions逻辑 执行逻辑解析 执行入口 ConfigurationClassPostProcessor.processConfigBeanDefinitions()方法中的do while循环体中 循环体逻辑 parse方法调用链 doProcessConfigurat…...
全套军事和民用监听系统
Python全套军事和民用监听系统的研发开发具有重要性的原因如下: 监听系统在军事和民用领域中具有广泛的应用。军事方面,监听系统可用于收集敌方情报、监测通信网络、进行电子战等,对于提高作战效能和获取情报优势至关重要。民用方面ÿ…...
MicroPython核心:编译器
MicroPython编译过程包括以下步骤: 词法分析器将MicroPython程序文本流转换为标记。语法解释器将标记转换为抽象语法(语法树)。根据语法书输出字节码或本地代码。 本文以给MicroPython增加一个简单的语言特性为例来说明这一过程:…...
R语言【taxlist】——tax2traits():将分类信息设置为分类单元特征
Package taxlist version 0.2.4 Description 分类法分类可以包含在taxonRelations插槽提供的信息中的 taxlist 对象中。然而,对于统计分析来说,将这些信息插入到插槽taxonTraits中可能更方便。 Usage tax2traits(object, ...)## S3 method for class …...
CTF-WEB的知识体系
CTF概念 CTF是Capture The Flag的缩写,中文一般译作夺旗赛 CTF起源于1996年DEFCON全球黑客大会 DEFCONCTF是全球技术水平和影响力最高的CTF竞赛 竞赛模式 解题模式:解决网络安全技术挑战(即找到flag),提交后获取相应分值。 攻防赛模式:要求找到其他队…...
【Spring框架】@Cacheable注解:缓存最佳实践
在Java开发中,性能优化是一个永恒的话题。对于使用Spring框架的应用程序来说,Cacheable 注解提供了一种简单有效的方式来提升性能,特别是对于那些计算成本高或数据变化不频繁的操作。本文将深入探讨 Cacheable 的使用方法和注意事项ÿ…...
iZotope RX 10.4.2 mac激活版 音频修复和增强工具
iZotope RX 10 for Mac是一款专业的音频修复软件,旨在提供强大、精确的工具,让用户能够清晰、纯净地处理音频。以下是其主要功能和特点: 软件下载:iZotope RX 10.4.2 mac激活版下载 强大的降噪功能:iZotope RX 10采用了…...
vue核心知识点
一、Vue基础知识点总结 开发vue项目的模式有两种: 基于vue.js,在html中引入vue.js,让vue.js管理div#app元素。基于脚手架环境:通过vue脚手架环境可以方便的创建一个通用的vue项目框架的模板,在此基础之上开发vue项目…...
【乳腺肿瘤诊断分类及预测】基于Elman神经网络
课题名称:基于Elman神经网络的乳腺肿瘤诊断分类及预测 版本日期:2023-05-15 运行方式: 直接运行Elman0501.m 文件即可 代码获取方式:私信博主或QQ:491052175 模型描述: 威斯康辛大学医学院经过多年的收集和整理&a…...
【kubernets】由Evicted状态的Pod探讨k8s中pod的驱逐策略
背景 某天突然发现自己的测试环境中有Evicted状态的pod,于是需要排查原因。先来看看大致情况: [rootk8s-m1 ~]# kubectl get pod -A -o wide|grep k8s-m1 kube-system calico-kube-controllers-bcc6f659f-575mr 1/1 Running 3 177d…...
vxe-table3.0的表格树如何做深层查找,返回搜索关键字的树形结构
vxe-table2.0版本是提供深层查找功能的,因为他的数据源本身就是树形结构,所以深层查找查询出来也是树形结构。 但是vxe-table3.0版本为了做虚拟树功能,将整个数据源由树形垂直结构变成了扁平结构,便不提供深层查询功能,…...
幻兽帕鲁越玩越卡,内存溢出问题如何解决?
近期幻兽帕鲁游戏大火,在联机组队快乐游玩的同时,玩家们也发现了一些小问题。由于游戏有随机掉落材料的设定,服务器在加载掉落物的过程中很容易会出现掉帧、卡顿的情况。某些玩家甚至在游戏1~2时后就出现服务器崩溃的情况…...
C++_list
目录 一、模拟实现list 1、list的基本结构 2、迭代器封装 2.1 正向迭代器 2.2 反向迭代器 3、指定位置插入 4、指定位置删除 5、结语 前言: list是STL(标准模板库)中的八大容器之一,而STL属于C标准库的一部分,因此在C中可以直接使用…...
使用docker部署mongodb
1.创建目录 mkdir -p /opt/mongodb/{data,logs,config} 2.创建配置文件 进入目录 cd /opt写入配置 vim mongod.conf 内容如下 systemLog:# MongoDB发送所有日志输出的目标指定为文件destination: file# mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径path:…...
C#,打印漂亮的贝尔三角形(Bell Triangle)的源程序
以贝尔数为基础,参考杨辉三角形,也可以生成贝尔三角形(Bell triangle),也称为艾特肯阵列(Aitkens Array),皮埃斯三角形(Peirce Triangle)。 贝尔三角形的构造…...
开源电商系统
前言 做电商永不过时,但形式会不断变化。任何赚钱的事情大体都分为两大块:生产和销售。两者是并重的,首先要有好的产品,其次是做好推广运营和销售渠道建设。对于小微企业来说,前期如果能通过销售赚到第一桶金…...
责任链模式在java中的实现
1 总览 2 概念 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。 3 实现 公共部分,一个系…...
粤嵌Gec6818---小项目功能实现简单步骤(RFID+图片显示+音乐+视频)
项目设计开发环境: (1)VMware Workstation Pro软件 (2)ubuntu12 .04 (能交叉编译就行) (3)SecureCRT (4)代码编译器(notepad/Vis…...
opencv学习 特征提取
内容来源于《opencv4应用开发入门、进阶与工程化实践》 图像金字塔 略 拉普拉斯金字塔 对输入图像进行reduce操作会生成不同分辨率的图像,对这些图像进行expand操作,然后使用reduce减去expand之后的结果,就会得到拉普拉斯金字塔图像。 …...
关于maven项目构建的解释
在Idea中使用模块化构建项目 项目介绍: sky-take-out sky-common pom.xml sky-pojo pom.xml sky-server pom.xml pom.xml 说明 sky-server依赖sky-pojo和sky-common,继承sky-take-outsky-pojo继承sky-take-outsky-common继承sky-take-out 由于Idea编…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
