一、重要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