[005]一步一步学懂spring - Spring aware
2017-07-21 09:35
239 查看
aware 的意思是“意识到的; 知道的; 觉察到的”spring 容器对于bean来讲,是无意识的,也就是说bean和容器之间是解耦的。如果换了容器,bean依然可以使用。那么spring aware就是为了让bean对容器有意思,让这俩紧紧耦合在一起。我们说项目中是要减少耦合的,那么为什么spring还提供了这个功能呢,存在的就是合理的,spring提供的spring aware就可以可以让bean来获取容器的一些服务。spring aware提供了一些接口,我们可以通过实现这些接口的方式来获取spring给我们提供的一些资源。主要接口如下
下面具体演示使用ResourceLoaderAware来加载资源和获得bean的名称。
服务(这里实现了两个接口,上面的接口用到哪些就可以实现哪些,其中ApplicationContext即可功能最全,也可以直接实现ApplicationContextAware接口)
配置类
测试类
BeanNameAware | 获得容器中bean的名称 |
BeanFactoryAware | 获取当前BeanFactory,通过BeanFactory可以调用容器的服务 |
ApplicationContextAware | 获取到当前的ApplicationContext |
MessageSourceAware | 获取 message source |
ApplicationEventPublisherAware | 应用事件发布器 |
ResourceLoaderAware | 资源加载器,加载外部资源 |
服务(这里实现了两个接口,上面的接口用到哪些就可以实现哪些,其中ApplicationContext即可功能最全,也可以直接实现ApplicationContextAware接口)
package com.hy.spring.test6; import org.springframework.beans.factory.BeanNameAware; import org.springframework.context.ResourceLoaderAware; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; @Service public class AwareService implements BeanNameAware,ResourceLoaderAware { private String beanName; private ResourceLoader reasourceLoader; @Override public void setResourceLoader(ResourceLoader resourceLoader) { this.reasourceLoader = resourceLoader; } @Override public void setBeanName(String name) { this.beanName = name; } public void out() { System.out.println(beanName); // 加载资源 Resource resource = reasourceLoader.getResource("classpath:com/hy/spring/test6/test.txt"); System.out.println(resource); } }
配置类
package com.hy.spring.test6; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.hy.spring.test6") public class AwareConfig { }
测试类
package com.hy.spring.test6; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AwareConfig.class); AwareService service = context.getBean(AwareService.class); service.out(); context.close(); } }
相关文章推荐
- 一步一步搭建springmvc spring mybatis框架整合之项目初始化
- 跟着和尚一步一步搭建springmvc+springdata-jpa+mybatis+shiro+bootstrap项目(三)
- 【Spring】Spring高级话题-Spring Aware
- 一步一步学Spring.NET——1、Spring.NET环境准备
- [201]一步一步学懂Spring - SpringBoot入门
- 09-SpringBoot——Spring 高级话题-Spring Aware
- Rhythmk 一步一步学 JAVA(4):Spring3 MVC 之 Hello Word
- Spring知识点回顾(08)spring aware
- spring源码学习 [Day001 / 005]
- 005-Spring Boot配置分析-配置文件、EnvironmentPostProcessor、Profiles
- 跟着和尚一步一步搭建springmvc+springdata-jpa+mybatis+shiro+bootstrap项目(一)
- Spring高级运用之浅析Spring Aware
- 一步一步学Spring.Net——2、第一个程序“Hello,World”
- 跟着笨鸟一步一步学习spring开发(1 spring mvc 版hello world)
- 一步一步学习Spring(4)-基于Spring的Hibernate Search全文检索功能
- spring boot 学习笔记(005)提交json对象
- 一步一步学习开源框架-spring
- Spring_005_IOC_Annotation_Autowired_Qulifier
- [置顶] 一步一步学springboot (二)打包jar并发布到服务器
- 一步一步深入spring(6)--使用基于XML配置的spring实现的AOP