在上一篇文章 源码解读(一): spring在web容器中的初始化过程 中,我们了解了Spring容器的初始化整个过程,但是你看了之后可能会有疑问。既然到这个时候初始化都已经完成了,那么bean的初始化应该从什么时候开始呢?不要着急,在上一篇文章中,ContextLoader中的ConfigureAndRefreshWebApplicationContext中的最后一步方法refresh操作中设定了BeanFactory,整个bean的生命周期也从这个方法中开始。下面,我们将详细讲解refresh方法到底做了什么。
wac.refresh();
refresh方法的实现类是抽象类AbstractApplicationContext,继承了ConfigurableApplicationContext等接口。AbstractApplicationContext采用模板方法模式,把一部分实现推迟到子类。refresh方法同样是一个模板方法。