Spring高级运用之浅析Spring Aware
来源:互联网 发布:python培训班wuhan 编辑:程序博客网 时间:2024/05/17 21:44
我们应该明白,Spring的依赖注入的最大亮点是你所有的Bean对Spring容器的存在是没有意识的,我们可以将Spring容器换成其他的容器,Spring容器中的Bean的耦合度因此也是极低的。
但是我们在实际的开发中,我们却经常要用到Spring容器本身的功能资源,所以Spring容器中的Bean此时就要意识到Spring容器的存在才能调用Spring所提供的资源。我们通过Spring提供的一系列接口Spring Aware来实现具体的功能。
首先介绍一下Spring所提供的Aware接口:
BeanNameAware 获得到容器中Bean的名称BeanFactoryAware 获得当前bean Factory,从而调用容器的服务ApplicationContextAware 当前的application context从而调用容器的服务MessageSourceAware 得到message source从而得到文本信息ApplicationEventPublisherAware 应用时间发布器,用于发布事件ResourceLoaderAware 获取资源加载器,可以获得外部资源文件
Spring Aware的目的是为了让Bean获得Spring容器的服务。因为ApplicationContext接口集成了MessageSource接口、ApplicationEventPublisher接口和ResourceLoader接口,因此当Bean继承自ApplicationContextAware的时候就可以得到Spring容器的所有服务。
例如:
首先在com.fuyunwang.aware包下面创建一个test.txt,内容任意指定。
之后在当前包下创建Spring Aware:
@Servicepublic class AwareService implements BeanNameAware, ResourceLoaderAware { private String beanName; private ResourceLoader loader; @Override public void setResourceLoader(ResourceLoader resourceLoader) { this.loader=resourceLoader; } @Override public void setBeanName(String name) { this.beanName=name; } public void outputResult() throws IOException{ System.out.println("Bean的名称是:"+beanName); Resource resource=loader.getResource("classpath:com/fuyunwang/aware/test.txt"); System.out.println("ResourceLoader加载的文件内容是:"); String line=null; BufferedReader reader=new BufferedReader(new InputStreamReader(resource.getInputStream())); while((line=reader.readLine())!=null){ System.out.println(line); } reader.close(); }}
在com.fuyunwang.config包下创建配置类:
@Configuration@ComponentScan(basePackages="com.fuyunwang")public class AwareConfig {}
测试类中编写代码测试:
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(AwareConfig.class);AwareService service=context.getBean(AwareService.class);service.outputResult();context.close();
0 0
- Spring高级运用之浅析Spring Aware
- Spring高级运用之浅析多线程与计划任务
- Spring aware相关接口 浅析
- spring之aware接口
- Spring-Aware
- # Spring Aware
- Spring Aware
- Spring Aware
- 09-SpringBoot——Spring 高级话题-Spring Aware
- Spring Aware (Spring 感知)
- Spring入门 Bean装配之Aware接口
- Spring源码学习IOC(7):浅析aware相关接口
- 聊聊Spring4.x高级话题(一)Spring Aware
- Spring:Aware和事件
- spring-aware接口
- Spring中的Aware
- spring-Aware接口
- Spring Bean--Aware接口
- nginx URL重写
- Vmware Workstation player 12 安装android x86问题汇总
- socket linger 选项
- Struts标签实现模型驱动
- angular+ioinc
- Spring高级运用之浅析Spring Aware
- 在jsp中使用javabean
- 七牛云存储____功能简介(1)
- Linux下文件的三个时间
- unrecognized selector sent to instance
- Vim配置#Vundle插件之supertab
- Android MVC框架模式
- Git版本控制 从入门到精通
- 去除inline-block之间的间隙