jdon如何接入第三方组件

如题,jdon 的IOC如何优美的注入第三方的组件(小弟也是刚接触jdon)。示例如下是spring 注入memcache客户端的例子


<bean name="factoryMemcachedClient"
class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
<property name="servers">
<value>${XMemcached_servers}</value>
</property>
<!-- server's weights -->
<property name="weights">
<list>
<value>1</value>
<value>1</value>
<value>1</value>
</list>
</property>
<!-- nio connection pool size -->
<property name="connectionPoolSize" value="${XMemcached_connectionPoolSize}"></property>
<!-- Use binary protocol,default is TextCommandFactory, BinaryCommandFactory KestrelCommandFactory -->
<property name="commandFactory">
<bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean>
</property> <!-- Distributed strategy KetamaMemcachedSessionLocator-->
<property name="sessionLocator">
<bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean>
</property> <!-- Serializing transcoder -->
<property name="transcoder">
<bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
</property> <!-- ByteBuffer allocator -->
<property name="bufferAllocator">
<bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean>
</property>
<property name="failureMode" value="${Xmemcached_failureMode}"></property>
<property name="opTimeout" value="${Xmemcached_opTimeout}"></property>
</bean>

JF是构造器注射,通过构造器注入可以保证这两个类的对象生命周期一致,那么通过setter方法进行注入,更容易产生两个类的对象生命周期不一致。


<component name="threadTimer"
class=
"com.jdon.jivejdon.util.ThreadTimer">
<constructor value=
"180" /><!-- seconds -->
<constructor value=
"20" /><!-- -->
</component>

参数是根据构造器参数次序依次注入,不需要写property名称,Spring貌似灵活,实际复杂,一旦property修改起来涉及面广,不但代码修改,配置文件也要修改。

如果有很多参数需要注入怎么办?从设计角度看,这些参数总是可以以一个对象代表。

比如A有p1 p2 p3 p4 p5 参数,在具体业务中,我们总可以发现p1, p2, p3代表一个新的对象ParameterA, p4 p5代表另外一个新的ParameterB对象,如果说原来A代表一个圈边界,我们实际可以细粒度在A圈内再分两个圈。设计是弹性的。如果一味假设设计是刚性的,那么框架也设计得貌似灵活,实际复杂。



[该贴被banq于2013-04-08 08:44修改过]