我观commons-pool之对象池与Ioc容器的区别

Ioc容器(典型的Spring)负责创建并管理对象之间的依赖关系以及生命周期,甚至还可以支持某种程度上受管对象与容器之间的交互(这需要受管对象的定义类实现容器相关的接口),spring借助对象作用域(singleton、prototype、request、session等)的概念支持在不同层次上缓存受管对象。 

但是从本质上来说容器对受管对象的缓存与池的行为是不同的,一般来说池需要区分其管辖的对象在某一特定时刻是否是空闲的,以保证当客户端向池索取对象时得到的总是空闲可用的对象,而一般来讲容器不需要也没必要承担这种责任。

从客户端的角度来说,容器的意义在于使得客户端可以共享某些对象及它们的状态,以及通过一种可配置的方式让容器管理这些对象之间的依赖关系和生命周期等等;而使用池的目的多半在于用户要池化的对象是有状态的,最重要的是这些状态并非为了在应用程序之间共享,它们只是对象池区分对象是否空闲可用的重要标志。典型地拿数据库连接池来说,它所管理的对象是数据库连接,它的职责是保证客户端在任何时候得到的连接总是空闲可用的(也就是说没有其它任何用户在使用此连接),如果某一特定的连接已被客户端获得且尚未被重新放回池中,其它客户端是不可以再获得此连接的。

一言以蔽之,客户端借助容器可以共享容器中的对象以及它们之间的状态;而借助于对象池却可以在不同时刻共享池中处于某种特定状态(典型的是空闲)的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值