除了 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,我们建议使用这些方法。