Spring IoC容器实现BEAN整个生命周期的管理,那么一个bean如何感知容器呢。
解决方案
Bean可以实现如下表格的某些“感知”接口来了解Spring IoC容器资源,Spring将通过这些接口中的设置方法将资源注入的bean中。
Spring中的常见感知接口
感知接口 | 目标资源 |
BeanNameAware | Ioc容器中配置实例的Bean名称 |
BeanFactoryAware | 当前Bean工厂,通过它可以调用容器的服务 |
ApplicationContextAware* | 当前应用上下文,通过它可以调用容器服务 |
MessageSourceAware | 消息资源,通过它可以解析文本信息 |
ApplicationEventPublisherAware | 引用事件发布者 |
ResourceLoadAware | 资源转载器,通过它可以转载外部资源 |
感知接口中的设置方法在bean属性设置之后、初始方法之前调用,说明如下:
(1)构造程序或者工厂方法创建Bean实例
(2)为bean属性设置值和Bean引用
(3)调用感知接口中定义的设值方法
(4)调用初始化回调方法
(5)Bean可以使用
(6)容器关闭,调用析构回调方法
注意:一旦Bean实现感知接口,他们就与Spring绑定,在Spring IoC容器之外无法正常工作。