zoukankan      html  css  js  c++  java
  • spring bean注册之bean工厂方式

    一般我们在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>

    但是最后你会发现最后生成的名为realCache的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。

    ps:如果想要获取EhCacheManagerFactoryBean本身:

    1、可以根据类型注入即直接使用@Autowired,

    2、或者使用ApplicationContext的getBean(EhCacheManagerFactoryBean.class);

    3、或者使用ApplicationContext的getBean("&realCache",EhCacheManagerFactoryBean.class);  这里的id就是xml里面写的id,特别注意前边的“&”

    第二、三种写法:

    通过工厂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了



    完毕!
  • 相关阅读:
    设备内核PROBE函数何时调用
    对象最小JAVA对象排序之获取最小负载数
    网页内容设置有用的meta设置解决网页内容不能适应某些浏览器宽度的问题
    定义提示【Cocos2DX 游戏引擎】常见错误备忘
    绑定列ORA24816: 在实际的 LONG 或 LOB 列之后提供了扩展的非 LONG 绑定数据
    PowerShell
    boot.ini 调试模式
    windbg远程调试
    TLogger日志类
    pageheap检查对操作错误
  • 原文地址:https://www.cnblogs.com/flying607/p/6379123.html
Copyright © 2011-2022 走看看