Springboot扫描注解类
Springboot扫描注解类的入口在AbstractApplicationContext的refresh中,对启动步骤不太了解的,可参考https://blog.csdn.net/leadseczgw01/article/details/128930925




BeanDefinitionRegistryPostProcessor接口有多个实现类,扫描Controller、Service等组件,这里使用的是ConfigurationClassPostProcessor的postProcessBeanDefinitionRegistry。


查看processConfigBeanDefinitions方法中的parser.parse(candidates),作用为解析所有@Configuration类,所有组件注解都包含@Configuration,实际就是解析
所有组件。

下图,如果BeanDefinition属于AnnotatedBeanDefinition,就开始解析注解bean定义。




在处理配置类的注解时,会找到ComponentScans注解,并解析其内容(@SpringBootApplication注解就包含@ComponentScan),由于未配置basePackages属性,解析到最后使用声明的类名。


后面扫描包,通过查看doScan方法的实现类,可以看到有两个,一个是ClassPathBeanDefinitionScanner(spring),另一个是ClassPathMapperScanner(使用mybatis集成的)。


这里使用的是ClassPathBeanDefinitionScanner的doscan方法。

扫描basePackage下的组件。


再对beanDefinition做一些后置处理。



上面完成了初步的BeanDefinition构建,在checkCandidate方法中将决定是否注册该BeanDefinition。



调用registerBeanDefinition方法开始注册BeanDefinition。


在DefaultListableBeanFactory的registerBeanDefinition方法中进行注册。

判断是否开始了bean创建。

已经有2个框架类开始创建,进入synchronized方法块进行添加。


注册完bean definition后同时给bean name注册别名。

相关文章:
Springboot扫描注解类
Springboot扫描注解类的入口在AbstractApplicationContext的refresh中,对启动步骤不太了解的,可参考https://blog.csdn.net/leadseczgw01/article/details/128930925BeanDefinitionRegistryPostProcessor接口有多个实现类,扫描Controller、Se…...
Apache日志分析器
您的Apache HTTP服务器生成的日志数据是信息的宝库。使用这些信息,您可以判断您服务器的使用情况、找出漏洞所在,并设法改进服务器结构和整体性能。审核您的Apache日志可在以下情况派上用场,其中包括:识别和纠正频繁出现的错误以增…...
啪,还敢抛出异常
🙉 作者简介: 全栈领域新星创作者 ;天天被业务折腾得死去活来的同时依然保有对各项技术热忱的追求,把分享变成一种习惯,再小的帆也能远航。 🏡 个人主页:xiezhr的个人主页 前言 去年又重新刷了…...
Apache JMeter 5.5 下载安装以及设置中文教程
Apache JMeter 5.5 下载安装以及设置中文教程JMeter下载Apache JMeter 5.5配置环境变量查看配置JDK配置JMeter环境变量运行JMeter配置中文版一次性永久设置正文JMeter 下载Apache JMeter 5.5 官方网站:Apache JMeter 官网 版本介绍: 版本中一个是Bina…...
string类模拟实现
了解过string常用接口后,接下来的任务就是模拟实现string类。 目录 VS下的string结构 默认成员函数和简单接口 string结构 c_str()、size()、capacity()、clear()、swap() 构造函数 拷贝构造函数 赋值重载 析构函数 访问及遍历 容量操作 reserve resize …...
cadence SPB17.4 S032 - allegro - 保存/载入光绘层定义
文章目录cadence SPB17.4 S032 - allegro - 保存/载入光绘层定义概述保存光绘层在新板子中载入已经保存的相同类型老板子定义好的光绘层定义文件碎碎念ENDcadence SPB17.4 S032 - allegro - 保存/载入光绘层定义 概述 以前布线完成, 准备出板厂文件时, 总是要手工重新建立光绘…...
微服务实战--高级篇:分布式缓存 Redis
分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 1.Redis持久化 Redis有两种持久化方案: RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件)…...
【C语言】可变参数列表
本篇博客让我们来认识一下C语言学习过程中往往被忽略的可变参数列表 所谓可变参数,就是一个不限定参数数量的函数,我们可以往里面传入任意个数的参数,以达成某些目的。 关联:C11可变模板参数;本文首发于 慕雪的寒舍 …...
目标检测的旋框框文献学习
这是最近打算看完的文献,一天一篇 接下来将记录一下文献阅读笔记,避免过两天就忘了 RRPN 论文题目:Arbitrary-Oriented Scene Text Detection via Rotation Proposals 论文题目:通过旋转方案进行任意方向的场景文本检测&#x…...
Hive 在工作中的调优总结
总结了一下在以往工作中,对于Hive SQL调优的一些实际应用,是日常积累的一些优化技巧,如有出入,欢迎在评论区留言探讨~ EXPLAIN 查看执行计划 建表优化 分区 分区表基本操作,partitioned二级分区动态分区 分桶 分…...
每天一道大厂SQL题【Day09】充值日志SQL实战
每天一道大厂SQL题【Day09】充值日志SQL实战 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&#…...
MATLAB 遗传算法
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…...
探讨 Java 中 valueOf 和 parseInt 的区别
前言 在编程中,遇到类型转换,好像会经常用到 parseInt 和 valueOf,当然这里只拿 Integer 类型进行陈述,其他类型也是雷同的; 想必有读者也跟我一样,经常交叉使用这两个方法,但却不知道这两者到…...
JSON学习笔记
♥课程链接:【狂神说Java】一小时掌握JSON_哔哩哔哩_bilibili配套的当然还要学习ajax不管是前端后端,感觉这部分内容是必须的,不然真的做项目的时候云里雾里。总体json的内容不多,具体就:1. 列表、对象等语法格式2. js…...
家政服务小程序实战教程07-轮播图组件
小程序中首页一般显示轮播图的功能,点击轮播图会跳转到具体的一篇文章或者是产品,本篇我们就介绍一下轮播图功能的开发 01 设计数据源 我们轮播图组件需要两个字段,一个是展示的图片,一个是跳转页面传入的参数。打开数据源&…...
MySQL之索引创建、删除、唯一索引、普通索引、及命名规则、注意事项
一、MySQL 索引 定义 索引是一个数据结构,用于加速数据库表中数据的查询。索引存储了一些数据表中的列值,以及这些列值在数据表中的位置,这样就可以通过索引来快速查找到数据表中的某一行数据。 MySQL 支持多种索引类型,包括普通…...
【C++设计模式】学习笔记(3):策略模式 Strategy
目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…...
Java——聊聊JUC中的ThreadLocal
文章目录: 1.什么是ThreadLocal? 1.1 api介绍 1.2 最简单的案例认识ThreadLocal 1.3 线程池结合ThreadLocal案例 2.Thread &ThreadLocal & ThreadLocalMap 3.ThreadLocal内存泄漏问题 3.1 四大引用之强引用 3.2 四大引用之软引用 3.3 四…...
软件工程(4)--螺旋模型
前言 这是基于我所学习的软件工程课程总结的第四篇文章。 在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。构建原型是一种能使某些类型的风险降至最低的方法。为了降低交付给用户的产品不能满足用户需要的风险,一种行…...
图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符
一、题目 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 二、示例 2.1> 示例 1: 【输入】s "abaccdeff" 【输出】b 2.2> 示例 2: 【输入】s "" 【输出】 限制: 0 < s 的…...
生成式视觉开发:用代码创造数字艺术的完整指南
生成式视觉开发:用代码创造数字艺术的完整指南 【免费下载链接】skills 本仓库包含的技能展示了Claude技能系统的潜力。这些技能涵盖从创意应用到技术任务、再到企业工作流。 项目地址: https://gitcode.com/GitHub_Trending/skills3/skills 当设计师面对空白…...
Bypass Paywalls Clean完全使用指南:突破网络内容访问限制的开源方案
Bypass Paywalls Clean完全使用指南:突破网络内容访问限制的开源方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 当你急需查阅重要新闻却遭遇付费墙阻挡时,…...
基于一致性算法的无人地面车辆UGV+无人飞行器UUV的异构混合高阶多智能体系统研究Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子…...
洛阳万达商场美团快闪店设计,凭什么成为商圈流量密码?肆墨设计
在商业美陈从 “装饰载体” 向 “生活场景容器” 转型的当下,洛阳万达商场美团 “美事发生” 美好生活集市快闪店,以品牌 IP 为核心锚点,融合女性消费心理与地域商业特质,构建了一场兼具视觉冲击力、情感共鸣与商业转化的沉浸式空…...
18-AI论文创作:自动找参考文献并精准标注
示例 薛磊.组织学习、数字能力与组织敏捷性的关系研究[D].吉林大学,2024. https://link.cnki.net/doi/10.27162/d.cnki.gjlin.2024.001308 关键词: 数字技术 组织学习 AI实战 使用大模型“探索” 请找到这这段话的内容向匹配的参考文献,并以ÿ…...
图解Uboot FIT Image:its文件里的load、entry地址到底怎么填?(以i.MX8MP为例)
深入解析Uboot FIT Image:i.MX8MP平台its文件地址配置实战指南 当你在i.MX8MP平台上第一次看到FIT Image的its文件时,那些神秘的load和entry地址值是否让你感到困惑?这些看似随意的十六进制数字背后,其实隐藏着嵌入式系统启动过程…...
解决时间序列稀疏性难题:Time-Series-Library数据增强技术的创新方案
解决时间序列稀疏性难题:Time-Series-Library数据增强技术的创新方案 【免费下载链接】Time-Series-Library A Library for Advanced Deep Time Series Models. 项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library 在工业预测系统的开发…...
PCL点云处理实战:5分钟搞定PassThrough滤波(附完整代码与可视化对比)
PCL点云处理实战:5分钟掌握PassThrough滤波的核心技巧 点云处理已经成为三维视觉领域不可或缺的技术环节。想象一下,当你拿到一组激光雷达扫描的原始点云数据时,那些杂散的噪声点、无效的远距离点往往会让后续的分析处理变得困难重重。PassTh…...
清音刻墨·Qwen3在新闻媒体中的应用:直播回放自动字幕生成时效性测试
清音刻墨Qwen3在新闻媒体中的应用:直播回放自动字幕生成时效性测试 1. 引言:当新闻直播遇上AI字幕 想象一下这个场景:一场重要的新闻发布会刚刚结束,编辑团队需要在半小时内将完整的直播回放配上精准的字幕,发布到各…...
突破设备壁垒:用swyh-rs构建零成本家庭音频网络的新方案
突破设备壁垒:用swyh-rs构建零成本家庭音频网络的新方案 【免费下载链接】swyh-rs Stream What You Hear written in rust, inspired by SWYH. 项目地址: https://gitcode.com/gh_mirrors/sw/swyh-rs 在智能家居普及的今天,音频设备却常常陷入&qu…...
