publicvoidregisterBeanDefinition(StringbeanName,BeanDefinitionbeanDefinition)throwsBeanDefinitionStoreException{Assert.hasText(beanName,"Bean name must not be empty");Assert.notNull(beanDefinition,"BeanDefinition must not be null");…… BeanDefinitionexistingDefinition =(BeanDefinition)this.beanDefinitionMap.get(beanName);// 重复bean处理if(existingDefinition !=null){if(!this.isAllowBeanDefinitionOverriding()){thrownewBeanDefinitionOverrideException(beanName,beanDefinition,existingDefinition);}if(existingDefinition.getRole()<beanDefinition.getRole()){if(this.logger.isInfoEnabled()){this.logger.info("Overriding user-defined bean definition for bean '"+beanName +"' with a framework-generated bean definition: replacing ["+existingDefinition +"] with ["+beanDefinition +"]");}}elseif(!beanDefinition.equals(existingDefinition)){if(this.logger.isDebugEnabled()){this.logger.debug("Overriding bean definition for bean '"+beanName +"' with a different definition: replacing ["+existingDefinition +"] with ["+beanDefinition +"]");}}elseif(this.logger.isTraceEnabled()){this.logger.trace("Overriding bean definition for bean '"+beanName +"' with an equivalent definition: replacing ["+existingDefinition +"] with ["+beanDefinition +"]");}this.beanDefinitionMap.put(beanName,beanDefinition);}else{// 新增bean处理if(this.hasBeanCreationStarted()){synchronized(this.beanDefinitionMap){this.beanDefinitionMap.put(beanName,beanDefinition);List<String>updatedDefinitions =newArrayList(this.beanDefinitionNames.size()+1);updatedDefinitions.addAll(this.beanDefinitionNames);updatedDefinitions.add(beanName);this.beanDefinitionNames =updatedDefinitions;this.removeManualSingletonName(beanName);}}else{this.beanDefinitionMap.put(beanName,beanDefinition);this.beanDefinitionNames.add(beanName);this.removeManualSingletonName(beanName);}this.frozenBeanDefinitionNames =null;}// 缓存清理if(existingDefinition ==null&&!this.containsSingleton(beanName)){if(this.isConfigurationFrozen()){this.clearByTypeCache();}}else{this.resetBeanDefinition(beanName);}}