首页 > 编程语言 >Spring源码(六)--BeanFactory 实现与继承关系

Spring源码(六)--BeanFactory 实现与继承关系

时间:2024-08-05 23:21:01浏览次数:15  
标签:容器 注册 BeanFactory -- 接口 bean 源码 单例

BeanFactory 实现与继承关系

这些接口和类的源码, 每一个都可以看一下。
请添加图片描述

ListableBeanFactory

由bean工厂实现的BeanFactory接口的扩展,这些bean工厂可以枚举它们所有的bean实例,而不是按客户端请求逐个按名称进行bean查找。

HierarchicalBeanFactory

由bean工厂实现的子接口,可以是层次结构的一部分。

父子级联 IoC 容器的接口,子容器可以通过接口方法访问父容器; 通过 HierarchicalBeanFactory 接口,
Spring 的 IoC 容器可以建立父子层级关联的容器体系,子容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。

ConfigurableBeanFactory

由大多数bean工厂实现的配置接口。
这个扩展的接口只是为了允许框架内部的即插即用和对bean工厂配置方法的特殊访问。

ConfigurableBeanFactory继承了 HierarchicalBeanFactory 和 SingletonBeanRegistry。

public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {

}

AutowireCapableBeanFactory

BeanFactory的扩展接口,实现该接口能够自动装配。
AutowireCapableBeanFactory 定义了将容器中的 Bean 按某种规则(如按名字匹配、按类型匹配等)进行自动装配的方法。

SingletonBeanRegistry

定义了共享bean实例的注册中心。


	/**
	 * 在bean注册中心通过bean名称将提供的对象注册为单例对象。提供的对象需要被完全初始化。
	 */
	void registerSingleton(String beanName, Object singletonObject);

	/**
	 * 返回以给定名称注册的(原始)单例对象
	 */
	@Nullable
	Object getSingleton(String beanName);

	/**
	 *  检查此注册表是否包含具有给定名称的单例实例。
	 * 
	 */
	boolean containsSingleton(String beanName);

	/**
	 * 返回在此注册中心中注册的单例bean的名称。
	 * 
	 */
	String[] getSingletonNames();

	/**
	 * 返回在此注册中心中注册的单例bean的数量。
	 */
	int getSingletonCount();

	/**
	 * 返回使用的单例互斥锁.
	 * 
	 */
	Object getSingletonMutex();

}

标签:容器,注册,BeanFactory,--,接口,bean,源码,单例
From: https://www.cnblogs.com/expiator/p/18344219

相关文章

  • DRBD9.26 Anolis os 8.9安装配置
    1、安装DRBD9.26两种安装方式1、添加epel-release源安装;2、源码编译安装。参考centosDRBD安装方式,添加epel-release源的方式安装:1.1安装epel源yuminstallepel-releaseyuminstalldrbd-utils2、安装DRBD9.26后,重新编译内核添加对DRBD的内核支持安装完DRBD后systemctlst......
  • Python回溯算法
    回溯算法回溯算法是一种系统的搜索算法,用于解决诸如排列组合、子集生成、图的路径、棋盘问题等问题。其核心思想是通过递归尝试各种可能的解决方案,遇到不满足条件的解时则回退(回溯),继续尝试其他可能性,直到找到所有的解决方案或确认无解。主要步骤:选择路径:在当前步骤选择一个可......
  • limu|P1-7|安装、预备知识
    安装:建议参考小土堆Pytorch教程的第一课,然后需要1-下载所有JupiterNotebook的文件并解压;2-pipinstalld2l相当于一次性把课程需要用到的包都install,但是这么下亲测很慢,不如到时候用到的时候发现没装,再install预备知识:仅说几个我觉得有意思的概念(全文字,一点点代码,懒得写公式),具......
  • 洛谷题单指南-前缀和差分与离散化-P1904 天际线
    原题链接:https://www.luogu.com.cn/problem/P1904题意解读:给出(左端点,高度,右端点)表示的若干建筑,要输出其轮廓,所谓轮廓就是每个点被覆盖的最高建筑的高度所描绘的线。解题思路:如果能计算每个点被覆盖的最高建筑的高度,用数组h[10005]保存,那么输出轮廓的过程只需要枚举每一个点,如......
  • 修饰之神——static
    一.static三个作用1.修饰局部变量,使得局部变量的周期变长2.修饰全局变量,使得全局变量不可跨文档使用3.修饰函数下面慢慢解释二.修饰局部变量大家可以比对一下两个简单代码第一个,这一个是没有static的,结果如下第二个,这一个是加了static的,结果如下那为什么会出现这一个......
  • 01-初识Docker
    1.常规应用部署面临的问题部署流程复杂环境不一致资源隔离问题交付流程复杂1)JavaWEB架构:代码打包——>上传镜像仓库——>镜像下载至服务器——>服务器运行镜像2)JavaSpingboot一体式架构:代码打包——>上传镜像仓库——>镜像下载至服务器——>服务器运行镜像3)JavaCl......
  • ARC181 - B - Annoying String Problem
    B-令人讨厌的字符串问题编辑:evima在大多数情况下,\(f(S,T,X)\)和\(f(S,T,Y)\)的长度相等,这揭示了\(T\)的长度。让我们来看看当已知\(S\)和\(T\)的长度时,在什么条件下\(S\)和\(T\)满足\(f(S,T,X)=f(S,T,Y)\)。例题例如,当\(|S|=6\)和\(|T|=4\)时,让我们考虑当\(S+......
  • CS50P: 9. Et Cetera
    setpython’sdocumentationofset类型数学上的集合,没有重复元素Q:统计有多少个不同名houseway1--liststudents=[{"name":"Hermione","house":"Gryffindor"},{"name":"Harry","house":"......
  • 二分法题目合集
    1.锯齿形数组找target有一个数组,前半部分有序,后半部分也有序,前半部分的开头元素大于后半部分的结尾元素,请从这个数组中找出target。解题思路:一开始我们就可以根据target和数组结尾元素的大小关系确定target属于哪个部分,之后将target和mid比较时就能根据位于哪一部分去更新l,r。......
  • JS历理 文本高度自适应
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="renderer"content="webkit"><metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1">......