在AbstractApplicationContext的refresh方法里,在获取到了BeanFactory后调用了prepareBeanFactory方法,在prepareBeanFactory方法里有添加一个名叫ApplicationContextAwareProcessor的BeanPostProcessor:
ApplicationContextAwareProcessor主要就是执行各种Aware的注入逻辑。我们可以看到在其postProcessBeforeInitialization方法中:
1、 先判断当前的bean是否实现了7个Aware接口中的其中一个,若都未实现则直接返回;
2、 调用InvokeAwareInterfaces方法来执行具体的aware注入逻辑;
我们可以看看InvokeAwareInterfaces的实现,非常简单,就是分别执行其所属Aware接口的相关Aware注入逻辑即可: