Spring容器DefaultListableBeanFactory概览

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 getSingletonCo

你可能感兴趣的:(spring,Java,java,spring)