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