Spring容器DefaultListableBeanFactory概览

本文介绍了Spring容器的核心组件DefaultListableBeanFactory,它实现了ConfigurableListableBeanFactory和BeanDefinitionRegistry接口,用于管理和实例化Bean。文章概述了DefaultListableBeanFactory的类层次结构,包括其接口如SimpleAliasRegistry、DefaultSingletonBeanRegistry和FactoryBeanRegistrySupport,并简述了核心逻辑实现,如别名管理、单例容器和FactoryBean的支持。重点提及了AbstractBeanFactory的doGetBean方法,它是BeanFactory体系的核心。
摘要由CSDN通过智能技术生成

Spring容器DefaultListableBeanFactory

概览

DefaultListableBeanFactory作为Spring中ConfigurableListableBeanFactory和BeanDefinitionRegistry的默认实现,是一个成熟的,基于BeanDefinition定义元数据,通过后置处理器可进行扩展的容器。由于DefaultListableBeanFactory的源码及层级关联关系及其复杂,一篇文章不可能详尽解释所有的细节,我们把主脉络解释清楚,主结构理解透彻,对spring的理解也能提升很多,首先我们来理一下DefaultListableBeanFactory的类层次结构,如下图所示:在这里插入图片描述层级结构源代码如下所示:

public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory
		implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable {
        //  省略了具体实现
}

其中ConfigurableListableBeanFactory接口的层次信息,我们在 Spring容器BeanFactory概览中已经介绍过了。下面介绍一下我们陌生的接口
AliasRegistry:

public interface AliasRegistry {
	void registerAlias(String name, String alias);
	void removeAlias(String alias);
	boolean isAlias(String name);
	String[] getAliases(String name);
}

BeanDefinitionRegistry:

public interface BeanDefinitionRegistry extends AliasRegistry {
	void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException;
	void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
	BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
	boolean containsBeanDefinition(String beanName);
	String[] getBeanDefinitionNames();
	int getBeanDefinitionCount();
	boolean isBeanNameInUse(String beanName);
}

SingletonBeanRegistry:

public interface SingletonBeanRegistry {
	void registerSingleton(String beanName, Object singletonObject);
	Object getSingleton(String beanName);
	boolean containsSingleton(String beanName);
	String[] getSingletonNames();
	int getSingletonCount();
	Object getSingletonMutex();
}

这三个接口都属于注册模

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值