spring 用静态工厂方法初始化bean的注意事项

如下

<bean id="sockIOPool4BIP" class="com.danga.MemCached.SockIOPool"
		factory-method="getInstance" init-method="initialize" destroy-method="shutDown"
		p:initConn="${sockIOPool.initConn}" p:minConn="${sockIOPool.minConn}"
		p:maxConn="${sockIOPool.maxConn}" p:maintSleep="${sockIOPool.maintSleep}"
		p:nagle="${sockIOPool.nagle}" p:socketTO="${sockIOPool.socketTO}"
		p:servers="${sockIOPool.servers}" p:hashingAlg="${sockIOPool.hashingAlg}">
		<constructor-arg value="${memcachedClient.instance}" />
	</bean>

 

 1.class属性的值不再是Bean实例的实现类,而是生成Bean实例的静态工厂类。(实际情况这也可能是同一个类,如上所示)。

2.使用factory-method属性指定生产bean实例的静态工厂方法。

3.如果静态工厂方法需要参数,使用<constructor-arg .../>元素指定静态工厂方法的参数,此时<constructor-arg .../>就不再是类的构造函数的参数了。

 

      当指定spring用静态工厂方法创建bean实例的时候,spring 会根据配置文件,找到对应的静态工厂类,运用反射,调用静态工厂方法,把返回的结果作为bean实例。在这个过程中,其实spring不负责创建bean实例,而是由用户提供的静态工厂类负责创建的。

       但创建Bean实例后,spring依然可以管理bean实例的依赖关闭,包括其注入所需的依赖关系和生命周期等。

 详细参考:

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-class-static-factory-method
http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-properties-detailed

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值