Spring中有很多继承于aware
中的接口,这些接口到底是做什么用到的。
aware
,翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware
前面的含义。
从spring源码来分析,的话,实现了这些接口的实例,能获取到系统中的一些属性。
比如实现了BeanNameAware 的对象,能拿到bean在系统中的名字,
比如实现了ApplicationContextAware的对象,能拿到整个ApplicationContext上下文的引用。
我们看下原码。
//填充bean,包括各种属性,这些属性就包括对于别的bean的依赖,这种依赖会引起递归初始化bean
populateBean(beanName, mbd, instanceWrapper);
//调用注入类的init-method方法
exposedObject = initializeBean(beanName, exposedObject, mbd);
exposedObject = initializeBean(beanName, exposedObject, mbd);这句代码是调用init方法的。进去之后
很明显这里bean就拿到了spring的内部一些属性。