前言
上篇介绍了 BeanDefinition 的管理者 BeanFactory。
如果你仔细看过 BeanFactory 里面的接口,你会发现,接口中并没有提供往 BeanFactory 中添加 BeanDefinition 的方法,那么这一步由谁来做呢?
这一步,Spring 又提供了一个接口:BeanDefinitionRegistry
BeanDefinitionRegistry接口
public interface BeanDefinitionRegistry extends AliasRegistry {
// 注册一个 BeanDefinition
void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
throws BeanDefinitionStoreException;
// 根据 beanName 删除一个 BeanDefinition
void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
// 根据 beanName 获得一个 BeanDefinition
BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
// 根据 beanName 判断是否包含一个 BeanDefinition
boolean containsBeanDefinition(String beanName);
// 返回所有存在 BeanDefinition 的名字
String[] getBeanDefinitionNames();
// 返回 BeanDefinition 的个数
int getBeanDefinitionCount();
// 根据 beanName 判断该 Bean 是否被注册
boolean isBeanNameInUse(StringbeanName);
}
AliasRegistry
Common interface for managing aliases. Serves as a super-interface for BeanDefinitionRegistry
BeanDefinitionRegistry 还继承一个接口:AliasRegistry,看名字也能猜的出,这是一个提供 Bean 别名支持的接口
public interface AliasRegistry {
// 设置一个别名
void registerAlias(String name, String alias);
// 删除某个别名
void removeAlias(String alias);
// 判断是否为别名
boolean isAlias(String name);
// 获取某个名字的别名
String[] getAliases(String name);
}