Spring的依赖注入的最大亮点就是所有的Bean对Spring容器的存在是没有意识的。即可以将容器替换成别的容器,如GoogleGuice,这时Bean之间的耦合度很低。
但是在实际项目中,不可避免地要用到Spring容器本身的功能资源,这时的Bean必须要意识到Spring容器的存在,才能调用Spring所提供的资源,这就是所谓的Spring Aware。其实Spring Aware本来就是Spring设计用来框架内部使用的,若使用了Spring Aware,会将Bean和Spring耦合
BeanNameAware | 获得到容器中Bean的名称 |
BeanFactoryAware | 获得当前bean factory,这样可以调用容器的服务 |
ApplicationContextAware* | 当前的application context,这样可以调用容器的服务 |
MessageSourceAware | 获得message source,这样可以获得文本信息 |
ApplicationEventPublisherAware | 应用实践发布器,可以发布事件,DemoPublisher也可以实现这个接口来发布事件 |
ResourceLoaderAware | 获得资源加载器,可以获得外部资源文件 |
Spring Aware的目的是为了让Bean获得Spring容器的服务。因为ApplicationContext接口集成了MessageSource接口、ApplicationEventPublisher接口和ResourceLoader接口,所以Bean继承ApplicationContextAware可以获得Spring容器的所有服务,但原则上还是用到什么接口就使用什么接口。