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中有效。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/q2780004063/article/details/109461418
内容来源于网络,如有侵权,请联系作者删除!