关于Spring中配置LocalSessionFactoryBean来生成SessionFactory

转载http://m.blog.csdn.net/blog/SpbDev/8545372

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

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

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

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

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

时间: 2024-10-31 00:24:57

关于Spring中配置LocalSessionFactoryBean来生成SessionFactory的相关文章

Spring中配置属性文件

Spring中配置和读取Properties文件 public class PropertiesFactoryBeanextends PropertiesLoaderSupportimplements FactoryBean, InitializingBean Allows for making a properties file from a classpath location available as Properties instance in a bean factory. Can b

spring中配置数据源

spring中配置数据源的几种常见方式: #mysql 数据库配置(jdbc.properties) jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=root 1.使用spring自带的数据源org.springfr

spring中配置监听队列的MQ

一.spring中配置监听队列的MQ相关信息注:${}是读取propertites文件的常量,这里忽略.绿色部分配置在接收和发送端都要配置. <bean id="axx" class="com.ibm.mq.jms.MQQueueConnectionFactory"> <property name="hostName" value="${}" />  <property name="po

spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法

在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appBase="" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="webapps/demo" reloadable=&quo

在Spring中配置Hibernate和单独配置Hibernate的区别

首先说下Spring和Hibernate的几个特征: Spring:自动依赖注入,类都可以被当成bean使用. Hibernate:会话工厂sessionfactory,事务管理器transaction. 如果只使用Hibernate,那么当你操作数据库的时候,需要敲诸如: Configuration conf = new Configuration().configure(); SessionFactory sf = conf.buildSessionFactory(); Session se

Spring中配置Hibernate事务管理

<!-- transationManager --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean>

Spring中配置数据源的4种形式

不管采用何种持久化技术,都需要定义数据源.Spring中提供了4种不同形式的数据源配置方式: spring自带的数据源(DriverManagerDataSource),DBCP数据源,C3P0数据源,JNDI数据源. 1.spring自带的数据源 DriverManagerDataSource XML代码: [html] view plain copy <bean id="dataSource" class="org.springframework.jdbc.data

Spring中配置log4j的方法

Spring中使用log4j的方便之处 1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需要在web.xml中设置一下.2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径.3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path. web.xml中的设定 在web.xml中的详细设定如下: <context-param> <param-name>

Spring中配置数据源的4种形式(转)

原文http://blog.csdn.net/orclight/article/details/8616103 不管采用何种持久化技术,都需要定义数据源.Spring中提供了4种不同形式的数据源配置方式: spring自带的数据源(DriverManagerDataSource),DBCP数据源,C3P0数据源,JNDI数据源. 1.spring自带的数据源 DriverManagerDataSource XML代码: [html] view plaincopy <bean id="dat