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容器,它就可能无法正常工作。所以,在实现这样的特有接口之前一定要仔细考虑:这样做是否是必需的。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值