Spring源碼學習-1.IOC-DefaultListableBeanFactory

  • }
  • }
  • if (earlySingletonExposure) {
  • Object earlySingletonReference = getSingleton(beanName, false);
  • if (earlySingletonReference != null) {
  • if (exposedObject == bean) {
  • exposedObject = earlySingletonReference;
  • }
  • else if (!this.allowRawInjectionDespiteWrapping && hasDependentBean(beanName)) {
  • String[] dependentBeans = getDependentBeans(beanName);
  • Set actualDependentBeans = new LinkedHashSet(dependentBeans.length);
  • for (int i = 0; i < dependentBeans.length; i++) {
  • String dependentBean = dependentBeans[i];
  • if (!removeSingletonIfCreatedForTypeCheckOnly(dependentBean)) {
  • actualDependentBeans.add(dependentBean);
  • }
  • }
  • if (!actualDependentBeans.isEmpty()) {
  • throw new BeanCurrentlyInCreationException(beanName,
  • "Bean with name '" + beanName + "' has been injected into other beans [" +
  • StringUtils.collectionToCommaDelimitedString(actualDependentBeans) +
  • "] in its raw version as part of a circular reference, but has eventually been " +
  • "wrapped. This means that said other beans do not use the final version of the " +
  • "bean. This is often the result of over-eager type matching - consider using " +
  • "'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.");
  • }
  • }
  • }
  • }
  • // Register bean as disposable.
  • registerDisposableBeanIfNecessary(beanName, bean, mbd);
  • return exposedObject;
  • }
  • doCreateBean方法暫時不分析

    Spring源碼學習-1.IOC-DefaultListableBeanFactory


    分享到:


    相關文章: