概述:
Aware 翻译:察觉的;注意到的;感知的;
在spring中存在多种xxxAware
接口,也就是对xxx感知的;反过来讲,Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识到。
场景
当在实际项目中,Bean需要得到关于spring容器本身的功能资源,这时Bean必须意识到Spring容器的存在,实现方式就是 Bean implement XXXAware
接口 | 描述 |
---|---|
BeanNameAware | 获得容器中Bean的名称 |
BeanFactoryAware | 获得当前Bean factory,这样可以调用容器的服务 |
ApplicationContextAware* | 当前的application context,这样可以调用容器的服务 |
MessageSourceAware | 获得message source,这样可以获得文本信息 |
ApplicationEventPublisherAware | 应用时间发布器,可以发布事件,demoPublisher也可实现这个接口来发布事件 |
ResourceLoaderAware | 获得资源价值器,可以获得外部资源文件 |
实际上bean继承ApplicationContextAware可以获得Spring容器的所有服务,但原则上我们还是用到什么接口,实现什么借口
代码样例
这里我们写一个bean,这个bean需要调用文件如 test.txt(请自己定义)文件,读取其中的内容,进行服务
- 1.实现了BeanNameAware、ResourceLoaderAware接口,获得Bean名称和资源加载的服务。
- 2.实现ResourceLoaderAware需要重写setResourceLoader。
- 3.实现beanNameAware 需要重写setBeanName方法
package com.rising3000.base.Fortest.aware;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context