除了 ApplicationContextAware 和 BeanNameAware (前面讨论过)之外,Spring 还提供了广泛的 Aware 回调接口,允许 bean 向容器指示它们需要某种基础结构依赖项。作为一般规则,名称表示依赖类型。下表总结了最重要的 Aware 接口:
类名 | 注入依赖 | 说明 |
---|---|---|
ApplicationContextAware IOC 容器 |
声明 ApplicationContext | ApplicationContextAware 和 BeanNameAware |
ApplicationEventPublisherAware | Event publisher of the enclosing ApplicationContext. 封闭的 ApplicationContext 的事件发布者。 |
应用程序上下文的附加功能 |
BeanClassLoaderAware | 用于加载 bean 类的类装入器。 | 实例化 bean |
BeanFactoryAware | 声明 BeanFactory。 | |
BeanNameAware | 声明 bean 的名称。 | ApplicationContextAware 和 BeanNameAware |
LoadTimeWeaverAware | 定义了编织器,用于在加载时处理类定义。 | 在 Spring 框架中使用 AspectJ 实现加载时编织 |
MessageSourceAware | 配置消息解析策略(支持参数化和国际化)。 | 应用程序上下文的附加功能 |
NotificationPublisherAware | Spring JMX 通知发布者。 | Notifications |
ResourceLoaderAware | 配置加载程序,用于低级别访问资源。 | Resources |
ServletConfigAware Servletconfigazware |
容器运行的当前 ServletConfig。仅在支持 web 的 Spring ApplicationContext 中有效。 | Spring MVC |
ServletContextAware | 容器运行在当前 ServletContext 中。仅在 web 的 Spring ApplicationContext 中有效。 | Spring MVC |
请再次注意,使用这些接口将代码与 Spring API 绑定在一起,而不是遵循控制反转/应用程序风格。因此,对于需要对容器进行编程访问的基础结构 bean,我们建议使用这些方法。