一、重要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. 1. **BeanNameAware**:回传beanNamebean对象。
  2. 2. **BeanClassLoaderAware**:回传classLoaderbean对象。
  3. 3. **BeanFactoryAware**:回传beanFactory给对象。

2.BeanPostProcessor方式调用

  1. 1. InitDestroyAnnotationBeanPostProcessor会在初始化前,执行@PostConstruct的方法,
  2. 2. ApplicationContextAwareProcessor会在初始化前,执行其他Aware的回调:
  3. 1. **EnvironmentAware**:回传环境变量
  4. 2. EmbeddedValueResolverAware:回传占位符解析器
  5. 3. **ResourceLoaderAware**:回传资源加载器
  6. 4. ApplicationEventPublisherAware:回传事件发布器
  7. 5. MessageSourceAware:回传国际化资源
  8. 6. ApplicationStartupAware:回传应用其他监听对象,可忽略
  9. 7. **ApplicationContextAware**:回传Spring容器ApplicationContext