Spring IOC 组件二 AliasRegistry及其实现

Spring IOC的一些组件2

1. AliasRegistry 提供别名管理功能

/**
 * Common interface for managing aliases. Serves as super-interface for
 * 管理别名的通用接口。 作为BeanDefinitionRegistry 的顶层接口
 * {@link org.springframework.beans.factory.support.BeanDefinitionRegistry}.
 *
 * @author Juergen Hoeller
 * @since 2.5.2
 */
public interface AliasRegistry {

    /**
     * Given a name, register an alias for it.
     * @param name the canonical name
     * @param alias the alias to be registered
     * @throws IllegalStateException if the alias is already in use
     * and may not be overridden
     */
    void registerAlias(String name, String alias);

    /**
     * Remove the specified alias from this registry.
     * @param alias the alias to remove
     * @throws IllegalStateException if no such alias was found
     */
    void removeAlias(String alias);

    /**
     * Determine whether this given name is defines as an alias
     * (as opposed to the name of an actually registered component).
     * @param name the name to check
     * @return whether the given name is an alias
     */
    boolean isAlias(String name);

    /**
     * Return the aliases for the given name, if defined.
     * @param name the name to check for aliases
     * @return the aliases, or an empty array if none
     */
    String[] getAliases(String name);

}

2 BeanDefinitionRegistry 拥有有bd的管理功能的接口

通常由内部实现(持有)AbstractBeanDefinition 等级bd的BeanFactory实现(DefaultListableBeanFactory and GenericApplicationContext .)
提供 bd 的管理功能 查改

BeanDefinitionRegistry包含的方法

/**
 * 持有bd的注册器的接口 通常由内部实现AbstractBeanDefinition 等级bd的BeanFactory实现
 * Interface for registries that hold bean definitions, for example RootBeanDefinition
 * and ChildBeanDefinition instances. Typically implemented by BeanFactories that
 * internally work with the AbstractBeanDefinition hierarchy.
 * 在spring 包中只有这个接口封装了对bd 的注册功能
 * 标准的BeanFactory接口只涵盖对完全配置的工厂实例的访问
 * 

This is the only interface in Spring's bean factory packages that encapsulates * registration of bean definitions. The standard BeanFactory interfaces * only cover access to a fully configured factory instance. * * Spring bd 解析器要生效实现这个接口,已知的实现 DefaultListableBeanFactory GenericApplicationContext. *

Spring's bean definition readers expect to work on an implementation of this * interface. Known implementors within the Spring core are DefaultListableBeanFactory * and GenericApplicationContext. */ public interface BeanDefinitionRegistry extends AliasRegistry { /** * Register a new bean definition with this registry. * Must support RootBeanDefinition and ChildBeanDefinition. * @param beanName the name of the bean instance to register * @param beanDefinition definition of the bean instance to register * @throws BeanDefinitionStoreException if the BeanDefinition is invalid * @throws BeanDefinitionOverrideException if there is already a BeanDefinition * for the specified bean name and we are not allowed to override it * @see GenericBeanDefinition * @see RootBeanDefinition * @see ChildBeanDefinition */ void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException; /** * Remove the BeanDefinition for the given name. * @param beanName the name of the bean instance to register * @throws NoSuchBeanDefinitionException if there is no such bean definition */ void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException; /** * Return the BeanDefinition for the given bean name. * @param beanName name of the bean to find a definition for * @return the BeanDefinition for the given name (never {@code null}) * @throws NoSuchBeanDefinitionException if there is no such bean definition */ BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException; /** * Check if this registry contains a bean definition with the given name. * @param beanName the name of the bean to look for * @return if this registry contains a bean definition with the given name */ boolean containsBeanDefinition(String beanName); /** * Return the names of all beans defined in this registry. * @return the names of all beans defined in this registry, * or an empty array if none defined */ String[] getBeanDefinitionNames(); /** * Return the number of beans defined in the registry. * @return the number of beans defined in the registry */ int getBeanDefinitionCount(); /** * Determine whether the given bean name is already in use within this registry, * i.e. whether there is a local bean or alias registered under this name. * @param beanName the name to check * @return whether the given bean name is already in use */ boolean isBeanNameInUse(String beanName); }

你可能感兴趣的:(Spring IOC 组件二 AliasRegistry及其实现)