Spring应用手册-Aware接口

x33g5p2x  于2021-09-26 转载在 Spring  
字(1.4k)|赞(0)|评价(0)|浏览(445)

Aware接口

spring应用手册(第五部分)

Aware翻译过来是感知,意识到,获取到等等。在spring中有很多Aware接口,实现这些接口的Bean可以“感知”到对应的对象,当然其实是spring帮我们注入的。我们使用BeanNameAware接口来举例子,spring中所有的Aware接口信息的罗列参看后面的列表。

BeanNameAware接口主要是让我们的Bean感知到当前Bean在spirng容器中的name。

看看源码:

package org.springframework.beans.factory;

public interface BeanNameAware extends Aware {
    void setBeanName(String s);
}

我们会发现接口中有一个setBeanName的方法,我们的任何Bean实现了这个接口,就必须实现这个方法,spring就会通过这个方法帮我们注入当前Bean的beanName。

看案例:我们让我们的Bean实现接口BeanNameAware

/** * @author 戴着假发的程序员 * @company http://www.boxuewa.com * @description */
public class MessageBean implements BeanNameAware {
    @Override
    public void setBeanName(String s) {
        System.out.println("MessageBean--spring传来的BeanName:"+s);
    }
}

创建spring容器我们就会发现控制台输出:

注意:所有的Aware接口中的set方法都是在容器创建对象之久直接注入的。这里需要你了解springBean的加载流程,spring会在实例化bean之后,执行所有的Aware接口中的set方法,进行对应的内容填充。

下面我们罗列一下spring的Aware接口:
ApplicationContextAware: 感知ApplicationContext对象。

ApplicationEventPublisherAware:封闭ApplicationContext的 Event 发布者。

BeanClassLoaderAware: Class loader 用于加载 bean classes。

BeanFactoryAware:声明BeanFactory

BeanNameAware: 声明 bean 的名称。

BootstrapContextAware:资源适配器BootstrapContext容器运行。通常仅在 JCA 感知ApplicationContext实例中可用。

LoadTimeWeaverAware:定义的 weaver 用于在 load time 处理 class 定义。

MessageSourceAware:用于解析消息的已配置策略(支持参数化和国际化)。

NotificationPublisherAware:Spring JMX 通知发布者

ResourceLoaderAware:配置加载程序以 low-level 访问资源。

ServletConfigAware:当前ServletConfig容器运行。仅在 web-aware Spring ApplicationContext中有效。

ServletContextAware:当前ServletContext容器运行。仅在 web-aware Spring ApplicationContext中有效。

相关文章