zoukankan      html  css  js  c++  java
  • 关于Spring中配置LocalSessionFactoryBean来生成SessionFactory

    学习Spring的过程中,一直不理解为何需要用LocalSessionFactoryBean来得到SessionFactory,Google之后发现有诸多童鞋有相似的问题,于是转载来分享:

    LocalSessionFactoryBean 本身不是一个session factory,但是spring会自动把对这个bean的引用替换成LocalSessionFactoryBean 里面的真正的session factory。


    No.1
    具体解释一下: 
    LocalSessionFactoryBean 这个class里面有个字段是存放真正的session factory的:

    1. publicclass LocalSessionFactoryBean implements FactoryBean, InitializingBean, DisposableBean {   
    2.   
    3.     private SessionFactory sessionFactory;   
    4.   
    5.     public Object getObject(); {   
    6.         returnthis.sessionFactory;   
    7.      }  


    当引用这个LocalSessionFactoryBean 的时候,比如applicationContext.getBean("localSessionFactoryBean ")这样,spring返回的不是LocalSessionFactoryBean 本身,他会自动调用getObject()这个方法,把真正的session factory返回。用<ref bean="">这样引用也一样,得到的都是session factory而不是LocalSessionFactoryBean 。这里代码没贴全,有兴趣的话去看看源代码。 
    所以不需要再显式地创建一个session factory,直接引用LocalSessionFactoryBean 就可以了。

    No.2

    LocalSessionFactoryBean实现了org.springframework.beans.factory.FactoryBean接 口, spring在装配的时候, 如果发现实现了org.springframework.beans.factory.FactoryBean接口, 就会使用FactoryBean#getObject() 方法返回的对象装配,具体的可以看下文档. 
    如果你想拿到LocalSessionFactoryBean实例, 在id前面加个'&'就可以了,在你的配置文件中BeanFactory.getBean('&sessionFactory')拿到的 就是LocalSessionFactoryBean的实例.

  • 相关阅读:
    移动端a标签点击图片有阴影处理
    sublime vue 语法高亮插件安装
    mongodb 命令
    MongoDB给数据库创建用户
    windows32位系统 安装MongoDB
    ES6之主要知识点(十)Proxy
    ES6之主要知识点(九)Set和Map
    ES6之主要知识点(八)Symbol
    ES6之主要知识点(七)对象
    Ueditor 1.4.3 插入表格后无边框无颜色,不能正常显示
  • 原文地址:https://www.cnblogs.com/writeLessDoMore/p/6771064.html
Copyright © 2011-2022 走看看