一、重要Aware接口统计
| 名称 | 注入依赖\作用 | 备注 |
|---|---|---|
| ApplicationContextAware | ApplicationContext | |
| BeanNameAware | 声明bean的名称 | |
| BeanFactoryAware | 声明 BeanFactory | |
| BootstrapContextAware | 容器运行的资源适配器BootstrapContext。 通常仅在JCA感知的 ApplicationContext 实例中可用 |
|
| ResourceLoaderAware | 配置的资源加载器 | 资源文件处理 |
| ApplicationEventPublisherAware | ApplicationContext的事件发布者 | |
| NotificationPublisherAware | Spring JMX通知发布者 | |
| MessageSourceAware | 用于解析消息的已配置策略(支持参数化和国际化) | |
| LoadTimeWeaverAware | 定义的weaver用于在加载时处理类定义 | AspectJ相关 |
| BeanClassLoaderAware | 用于加载bean类的类加载器 | 实例化Bean |
| ServletConfigAware | 当前ServletConfig容器运行。仅在Web下的Spring ApplicationContext中有效 | Spring MVC |
| ServletContextAware | 容器运行的当前ServletContext。仅在Web下的Spring ApplicationContext中有效 | Spring MVC |
二、执行时机
1.显示调用Aware
完成属性赋值之后,(如果当前Bean实现了指定Aware)Spring会执行一些回调,包括:
1. **BeanNameAware**:回传beanName给bean对象。2. **BeanClassLoaderAware**:回传classLoader给bean对象。3. **BeanFactoryAware**:回传beanFactory给对象。
2.BeanPostProcessor方式调用
1. InitDestroyAnnotationBeanPostProcessor会在初始化前,执行@PostConstruct的方法,2. ApplicationContextAwareProcessor会在初始化前,执行其他Aware的回调:1. **EnvironmentAware**:回传环境变量2. EmbeddedValueResolverAware:回传占位符解析器3. **ResourceLoaderAware**:回传资源加载器4. ApplicationEventPublisherAware:回传事件发布器5. MessageSourceAware:回传国际化资源6. ApplicationStartupAware:回传应用其他监听对象,可忽略7. **ApplicationContextAware**:回传Spring容器ApplicationContext
