Spring源码之ApplicationContext(二)准备工作

在这一章节中, 我们主要来学习prepareRefresh()方法。这个函数主要就是环境准备,例如对系统属性及环境变量的初始化及验证。下面我们先来看一张时序图。(相关资源可到这里下载:http://pan.baidu.com/s/1sjSo9a9)


1. AbstractApplicationContext

在个类中,我们可以看我们需要的环境准备函数prepareRefresh()。这里有两个函数值得我们去留意,那就是留给子类覆盖和验证需要的属性文件是否都已经放入环境中。

protected void prepareRefresh() {
		this.startupDate = System.currentTimeMillis();
		this.closed.set(false);
		this.active.set(true);

		if (logger.isInfoEnabled()) {
			logger.info("Refreshing " + this);
		}

		// Initialize any placeholder property sources in the context environment
		//留给子类覆盖
		<strong>initPropertySources()</strong>;

		// Validate that all properties marked as required are resolvable
		// see ConfigurablePropertyResolver#setRequiredProperties
		//验证需要的属性文件是否已经放入环境中
		<strong>getEnvironment().validateRequiredProperties()</strong>;

		// Allow for the collection of early ApplicationEvents,
		// to be published once the multicaster is available...
		this.earlyApplicationEvents = new LinkedHashSet<ApplicationEvent>();
	}

对于上面给出的initPropertySource是提供给用户去扩展Spring的能力。用户可以根据自身的需求去重写initPropertySource方法。而validateRequiredProperties则是对属性进行验证。

2. 总结

   Spring在加载前做的环境准备,主要是用prepareRefresh函数来实现。这里的实现突出了Spring的设计特点,允许用户去扩展自己想要的功能,这也是Spring框架的灵活性之一。更多的细节性代码,读者可以自己跟踪进出看看。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值