第三章
Spring Aware
Spring的依赖注入的最大亮点就是所有的bean对Spring容器的存在是没有任何意识的,即你可以将你的容器替换成别的容器,如Google Guice,这时Bean之间的耦合度很低。
但是在实际项目中,我们不可避免的要使用到Spring容器本身的功能资源,这个时候就需要Bean必须要意识到Spring容器的存在,只有这样才能够调用Spring所提供的资源,这就是所谓的Spring Aware。但是使用了Spring Aware,我们的Bean就会和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容器的所有服务,但原则上我们还是用到什么接口,就实现什么接口。