美文网首页
Spring IOC 组件二 AliasRegistry及其实

Spring IOC 组件二 AliasRegistry及其实

作者: 李逍遥JK | 来源:发表于2020-04-30 00:12 被阅读0次

    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接口只涵盖对完全配置的工厂实例的访问
     * <p>This is the only interface in Spring's bean factory packages that encapsulates
     * <i>registration</i> of bean definitions. The standard BeanFactory interfaces
     * only cover access to a <i>fully configured factory instance</i>.
     *
     * Spring bd 解析器要生效实现这个接口,已知的实现 DefaultListableBeanFactory GenericApplicationContext.
     * <p>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及其实

          本文链接:https://www.haomeiwen.com/subject/lwanwhtx.html