目录
2、obtainFreshBeanFactory()获取已创建BeanFactory
2.1、org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory()
2.2、org.springframework.context.support.GenericApplicationContext.refreshBeanFactory()
2.3、org.springframework.context.support.GenericApplicationContext.getBeanFactory()
2、obtainFreshBeanFactory()获取已创建BeanFactory
2.1、org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory()
/** * Tell the subclass to refresh the internal bean factory. * 告诉子类刷新内部bean工厂。 * @return the fresh BeanFactory instance * @see #refreshBeanFactory() * @see #getBeanFactory() */ protected ConfigurableListableBeanFactory obtainFreshBeanFactory() { //刷新BeanFactory,设置ID refreshBeanFactory(); //获取刷新后的BeanFactory:DefaultListableBeanFactory ConfigurableListableBeanFactory beanFactory = getBeanFactory(); if (logger.isDebugEnabled()) { logger.debug("Bean factory for " + getDisplayName() + ": " + beanFactory); } //将BeanFactory(DefaultListableBeanFactory)返回; return beanFactory; }
2.2、org.springframework.context.support.GenericApplicationContext.refreshBeanFactory()
/** * Do nothing: We hold a single internal BeanFactory and rely on callers * to register beans through our public methods (or the BeanFactory's). * 不执行任何操作:我们拥有一个内部BeanFactory,并依靠调用者通过我们的公共方法(或BeanFactory的方法)注册Bean。 * @see #registerBeanDefinition */ @Override protected final void refreshBeanFactory() throws IllegalStateException { if (!this.refreshed.compareAndSet(false, true)) { throw new IllegalStateException( "GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once"); } //设置ID this.beanFactory.setSerializationId(getId()); }
2.3、org.springframework.context.support.GenericApplicationContext.getBeanFactory()
/** * Return the single internal BeanFactory held by this context * 返回此上下文持有的单个内部BeanFactory * (as ConfigurableListableBeanFactory). */ @Override public final ConfigurableListableBeanFactory getBeanFactory() { return this.beanFactory; }