Spring Bean生命周期

Java51

本文基于图灵课堂周瑜老师的讲解整理,包括spring bean加载的过程,主要是扫描BeanDefinition以及初始化非懒加载单例Bean两部分,源码取自SpringFramework 5.3.22

1. Bean扫描

本小节介绍的是Spring从给定的扫描位置扫描到待加载的Bean,生成BeanDefinitionMap的过程

SpringBoot启动过程中使用的ApplicationContext是 AnnotationConfigApplicationContext,而它初始化的时候会顺带初始化两个 BeanDefinitionReaderAnnotatedBeanDefinitionReaderClassPathBeanDefinitionScanner,前者是可以直接通过给定的class注册Bean,后者则可以扫描给定目录下所有的目标Bean,下面着重介绍后者扫描Bean组件的过程。

ClassPathBeanDefinitionScanner扫描的入口是public int scan(String... basePackages),而真正做事情的是protected Set

下面将以上部分代码展开去讲

即对应 findCandidateComponents方法的操作,该方法如下:

  • 首先来判断是否有对应的索引,即看 componentsIndex是否有值,它加载的是 META-INF/spring.components中的信息,内容格式如下:
com.sgw.demo=org.springframework.stereotype.Component
输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

设计模式之桥接模式

本文通过老王和小王买车,引出设计模式中的结构型设计之桥接模式,接着说明设计型模式的概念和代码实现,为了加深理解,会说明适配器设计模式在JDBC中的应用,最后谈谈桥接模式和适配器模式的总结。 一、引出问...
Java

阿里面试:MySQL如何设计索引更高效?

数据库系列迄今已更新。我想你对所有的概念都有大致的了解。当我阅读本周的评论时,我发现一位网友提出了一个有趣的问题:帅冰是如何设计索引的?如何设计索引?如何更有效地设计?[En]The database...
Java

IDEA使用Gittee提交代码

今天给大家分享一下如何从idea提交代码到gitee上面。 1.先在gitee上创建仓库 2.填写相应的信息 3.下载git 直接next一站式安装 4.鼠标右键点击 Git Bash Here, 通...
Java

字符串匹配—KMP算法

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后...
Java

文件输入/输出流

文件输入/输出流程序 运行期间,大部分数据都被存储在 内存中,当程序结束或被关闭时,存储在内存中的数据将会 消失。如果要 永久保存数据,那么最好的办法就是把数据保存到 磁盘的文件中。为此,Java提供...
Java

java集合框架

转载:https://www.cnblogs.com/yangliguo/p/7476788.html 部分修改自其它博主,地址找不到了,望见谅! 集合 集合与数组 数组(可以存储基本数据类型)是用来...
Java

Java(12)静态字段与静态方法

之前我们都定义的 main方法都被标记了 static修饰符,那到底是什么意思?下面我们来看看 静态字段 如果将一个字段定义为 static,每个类只有一个这样的字段。而对于非静态的实例字段,每个对象...
Java

设计模式之享元模式

本文通过优化买票的重复流程来说明享元模式,为了加深对该模式的理解,会以String和基本数据类型的包装类对该模式的设计进一步说明。 一、引出问题 鉴于小王此前的出色表现,老王决定带小王去旅游,但他在火...
Java

java读写锁

工作遇到了金钱计算,需要用到读写锁保证数据安全。记录一下。 单纯读没有限制,读写、写写的时候会有安全问题。 _hashMap_存在并发线程安全问题,而 _hashtable_线程安全但每次修改的时候使...
Java

Redis的Java客户端

Redis 的 Java 客户端 Jedis 优点:以 Redis 命令作为方法名称,学习成本低廉,简单且实用 缺点:Jedis 的实例是线程不安全的,在多线程的环境下需要基于线程池来使用 lettu...
Java

Hexo 博客安装 Fluid 主题

一.主题 使用 hexo 推荐选择一款自己喜欢的主题,主题带有一些额外的功能适配,不需要自己去做,比如评论、友链、访问统计。可以浏览官方网站来选择自己喜欢的主题:https://hexo.io/the...