您的位置:首页 > 编程语言 > Java开发

Spring源码 - 注册bean信息到ioc容器

2017-03-13 23:42 519 查看
注册bean信息(BeanDefinition)到Ioc容器中,

DefaultListableBeanFactory.class文件

    public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)

            throws BeanDefinitionStoreException {

        Assert.hasText(beanName, "Bean name must not be empty");

        Assert.notNull(beanDefinition, "BeanDefinition must not be null");

        if (beanDefinition instanceof AbstractBeanDefinition) {

            try {

                ((AbstractBeanDefinition) beanDefinition).validate();

            }

            catch (BeanDefinitionValidationException ex) {

                throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,

                        "Validation of bean definition failed", ex);

            }

        }

        synchronized (this.beanDefinitionMap) {

            Object oldBeanDefinition = this.beanDefinitionMap.get(beanName);

            if (oldBeanDefinition != null) {

                if (!this.allowBeanDefinitionOverriding) {

                    throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,

                            "Cannot register bean definition [" + beanDefinition + "] for bean '" + beanName +

                            "': There is already [" + oldBeanDefinition + "] bound.");

                }

                else {

                    if (this.logger.isInfoEnabled()) {

                        this.logger.info("Overriding bean definition for bean '" + beanName +

                                "': replacing [" + oldBeanDefinition + "] with [" + beanDefinition + "]");

                    }

                }

            }

            else {

                this.beanDefinitionNames.add(beanName);

                this.frozenBeanDefinitionNames = null;

            }

            this.beanDefinitionMap.put(beanName, beanDefinition);

            resetBeanDefinition(beanName);

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: