spring依赖注入的最大亮点就是所有的bean感知不到spring容器的存在,但在实际开发中,我们不可避免的要用到spring容器本身的功能资源,这时,我们就必须意识到容器的存在(废话,都要跟容器进行交互了好么),才能调用spring所提供的资源,这就是所谓的Spring Aware。
Spring Aware的目的是为了让bean获得spring容器的服务。因为ApplicationContext接口集成了MessageSource接口、ApplicationEventPublisher接口和ResourceLoader接口,所以bean继承ApplicationContextAware可以获得spring容器的所有服务,但原则上我们还是用到什么接口就实现什么接口。
-----------示例---------------------------------------------------
service类,方法具体的执行类:

@Service
public class AwareService implements BeanNameAware,ResourceLoaderAware {
private String beanName;
private ResourceLoader loader; @Override
public void setBeanName(String name) {
this.beanName = name;
} @Override
public void setResourceLoader(ResourceLoader resourceLoader) {
this.loader = resourceLoader;
} public void outputResult(){
System.out.println("bean 的名称为:" + beanName);
Resource resource = loader.getResource("classpath:com/wzy/bj/aware/test.txt");
try{
System.out.println("ResourceLoader加载的文件内容为:" + IOUtils.toString(resource.getInputStream()));
}catch (Exception e){
e.printStackTrace();
}
} }
config类,相当于xml配置文件:
@Configuration
@ComponentScan("com.wzy.bj.aware")
public class AwareConfig {
}
测试类,此处直接main方法运行了:

public class AwareMain {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AwareConfig.class);
AwareService service = context.getBean(AwareService.class);
service.outputResult();
context.close();
}
}
结果:

 
 

最新文章

  1. SLAM前端技术选择思考
  2. CWnd与HWND的简单辨析
  3. Linux系统真正的优势以及学习方法
  4. SAPI训练文件存储位置
  5. 坐标随鼠标移动 jquery简易版
  6. Kinect For Windows V2开发日志七:照片合成与背景消除
  7. Class.forName()的作用与使用总结(转载)
  8. python 自动化之路 day 04.1 python内置函数
  9. ffmpeg推rtmp流到crtmpserver直播
  10. Android 监听器
  11. client对象层次和0级DOM
  12. linux下磁盘进行分区、文件系统创建、挂载和卸载(转)
  13. cocos2d-x教程2:在windows下怎样批量转换pvr,ccz为png或jpg
  14. @OnetoOne @OnetoMany @ManyToOne(2)
  15. 和菜鸟一起学linux之upnp协议的学习记录
  16. 用Navicat for Mysql导入.sql文件
  17. English trip Spoken English & Word List(updating...)
  18. hdu 4135 [a,b]中n互质数个数+容斥
  19. .gitignore文件规则不起效的解决办法
  20. 【API规范】OpenAPI规范

热门文章

  1. Bugly升级应用集成指南
  2. 2 plan team 服务器搭建
  3. C# WinForm:无法访问已释放的对象
  4. Dapper --Execute
  5. 51nod - 1179 - 最大的最大公约数 - 枚举
  6. redis-淘汰策略
  7. phaser小游戏框架学习(一)
  8. 最短路【bzoj1726】: [Usaco2006 Nov]Roadblocks第二短路
  9. linux read和write
  10. hdu1166 敌兵布阵 线段树(区间更新)