码迷,mamicode.com
首页 > 编程语言 > 详细

spring bean注册之bean工厂方式

时间:2017-02-08 18:34:05      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:web   hce   strong   path   property   work   font   工厂   dao   

一般我们在spring中注册一个bean,直接

<bean id="websocket" class="com.sdyy.common.spring.websocket.WebsocketEndPoint"/>

这样会用WebsocketEndPoint的构造方法(这种是无参),为我们创建一个对象bean。

 

————————————————————————————分界线—————————————————————————————————————————————

 

但是还有一种方式,用bean工厂注册bean的,有三种写法,我们先看第一种:

 

第一种写法以及实例解析:

拿著名的Ehcahce,在spring里注册的方式来说,它在spring里是这样写的:

<bean id="realCache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:cache/ehcache.xml" />
    </bean>

但是最后你会发现最后生成的bean是一个net.sf.ehcache.CacheManager类的对象,而非org.springframework.cache.ehcache.EhCacheManagerFactoryBean

这是因为EhCacheManagerFactoryBean实现了spring的FactoryBean接口

技术分享

 FactoryBean有三个方法要求实现

技术分享

其中getObject方法返回的结果才会作为真正的注册结果bean返回给spring我们来看一下

org.springframework.cache.ehcache.EhCacheManagerFactoryBean 的 getObject方法返回了什么:

技术分享

技术分享

技术分享

是的,就是net.sf.ehcache.CacheManager。

 

第二、三种写法:

通过工厂bean还可以写:

 写法一:
<
bean id="factoryBean" class="com.demo.BaseBeanFactory"></bean> <bean id="bean" factory-bean="factoryBean" factory-method="createBaseDao"></bean>

写法二:
<bean id="bean" class="com.demo.BaseBeanFactory" factory-method="createBaseDao"></bean>
 
factory-method指的就是哪个方法来创建bean,这里就不要求继承FactoryBean了



完毕!

spring bean注册之bean工厂方式

标签:web   hce   strong   path   property   work   font   工厂   dao   

原文地址:http://www.cnblogs.com/flying607/p/6379123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!