首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

spring之使Bean感知器皿

2012-11-08 
spring之使Bean感知容器spring之使Bean感知容器----------??一个设置良好的组件不应该对它的容器产生直接

spring之使Bean感知容器

spring之使Bean感知容器

----------

?

?

一个设置良好的组件不应该对它的容器产生直接依赖。不过,有时让Bean能够感知容器的资源也是必要的。通过实现特定的"感知"(aware)接口,Bean可以感知Spring IOC容器的资源,Spring将通过定义在这些接口里的setter方法给Bean注入相应的资源。

Spring里的常用感知接口:

?

?

感知接口目标资源BeanNameAware在IOC容器里配置的Bean实例的名称BeanFactoryAware当前的Bean Factory,通过它可以调用容器的服务ApplicationContextAware当前的Application Context,通过它可以调用容器的服务MessageSourceAware消息源,通过它可以解析文本信息ApplicationEventPublisherAware应用程序事件发布器,通过它可以发布应用程序的事件ResourceLoaderAware资源加载器,通过它可以加载外部资源

?

事实上,因为ApplicationContext接口扩展了MessageSource,ApplicationEventPublisher和ResourceLoader接口,所以只需要感知ApplicationContext就可以访问所有的这些服务。不过,最佳实践是:在选择感知接口时,尽量选择能够满足需求的最小范围的感知接口。

?

在设置Bean的属性之后,调用初始化回调方法之前,Spring会调用感知接口里的setter方法,整个过程如下:

1.通过构造器或者工厂方法创建Bean的实例。

2.为Bean的属性设置值和对其他Bean的引用。

3.调用定义在感知接口里的setter方法。

4.调用Bean的初始化回调方法。

5.Bean可以使用了。

6.当容器关闭时,调用Bean的销毁回调方法。

请牢记一点,一旦Bean实现了感知接口,那么它就与Spring绑定了,如果离开Spring IOC容器,它就可能无法正常工作。所以,在实现这样的特有接口之前一定要仔细考虑:这样做是否是必需的。

?

?

?

?

热点排行