jdon如何接入第三方组件

13-03-27 tecentIDACDF0
如题,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>	
<p>
         

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

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

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

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

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

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

猜你喜欢