Spring注解驱动开发-扩展原理之002-Spring容器刷新第二步-obtainFreshBeanFactory()

目录

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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值