IoC容器管理的Bean一般不需要了解容器的状态和直接使用容器,为了和IoC容器api耦合降到最低。但是在某些情况下,是需要在Bean
里面直接对IoC容器进行操作,这个时候,需要在Bean中设定对容器的感知。Spring IoC容器提供了该功能,它是通过特定的aware
接口来完成的主要有以下这些:
BeanNameAware
可以在Bean中得到它所在的IoC容器中的Bean的示例名称。BeanFactoryAware
可以在Bean中得到它所在IoC容器,从而直接在Bean中使用IoC容器的服务。ApplicationContextAware
可以在Bean中得到Bean所在应用上下文,从而直接在Bean中使用应用上下文服务。MessageSourceAware
在Bean中可以得到消息源ApplicationEventPublisherAware
在Bean中可以得到应用上下文的事件发布器,从而可以在Bean中发布应用上下文事件ResourceLoaderAware
在Bean中可以得到ResourceLoader,从而在Bean中使用ResourceLoader加载外部对应的Resource资源