我们知道当我们集成Hibernate,我们需要Spring管理事务,自然而然就需要SessionFactory来创建Session,但是我们发现在Spring依赖注入的并不是SessionFactory,而是org.springframework.orm.hibernate3.LocalSessionFactoryBean

通过LocalSessionFactoryBean源码发现LocalSessionFactoryBean extends AbstractSessionFactoryBean,而AbstractSessionFactoryBean implements FactoryBean<SessionFactory>的一个接口

public interface FactoryBean<T> {

T getObject() throws Exception;

Class<?> getObjectType();

boolean isSingleton();

}

LocalSessionFactoryBean 并不是真正的SessionFactory,只是拥有创建SessionFactory的能力,但Spring会自动把对这个Bean的引用转换成LocalSessionFactoryBean里面的SessionFactory。所以当Spring加载时,如果发现某个bean实现了FactoryBean接口,就会自动调用FactoryBean.getObject(),返回对应的实例。所以使用ctx.getBean("sessionFactory");Spring返回的不是LocalSessionFactoryBean本身,而是返回具体的<T>

总结:通过Spring的这个特性我们也可以编写类似于这种模式功能,只要实现FactoryBean<SessionFactory>接口,接下来就可以通过Spring返回你想返回的对象了

浅析Spring之sessionFactory相关推荐

  1. 浅析Spring事务传播行为和隔离级别

    7个传播行为.4个隔离级别. Spring事务的传播行为和隔离级别[transaction behaviorand isolatedlevel] Spring中事务的定义: Propagation(k ...

  2. Java怎么使用spring定时器_浅析spring定时器的使用

    原生的Java定时器 使用Java.util包下的定时器也很简单,具体代码如下: //设置定时器开始时间 Date time = sdf.parse("2020-10-01 16:40:00 ...

  3. 浅析 Spring Security 的认证过程及相关过滤器

    前言 上一篇文章 浅析 Spring Security 核心组件 中介绍了Spring Security的基本组件,有了前面的基础,这篇文章就来详细分析下Spring Security的认证过程. S ...

  4. Spring的sessionFactory配置详解

    一句话,Spring对Hibernate的整合,是在applicationContext.xml中配置sessionFactory来实现的,其中sessionFactory中要装配dataSource ...

  5. Spring配置SessionFactory

    Spring的核心模块之一为依赖注入,普遍使用的为Set方式注入,那么下面将借助该方式配置数据源和SessionFactory.         直接引用hibernate.cfg.xml配置文件   ...

  6. 浅析Spring 事务(十九) 简介事务

    经过前面十八个章节的浅析,我们已经初步了解了Spring框架的左膀右臂IoC和AOP,今天我们开始一起分析一下Spring的事务~ 首先,今天算是开篇介绍~先说一下,什么是事务,事务是数据库的比较特有 ...

  7. 浅析Spring——控制反转IoC

    目录 1. IoC理论推导 2. 什么是IoC? 3. 引入DI 4. IoC容器 5. 注入对象的四种方法 1.基于接口 2.基于setter 3.基于构造函数 4.基于注解 6. 两种IoC实现方 ...

  8. Mybatis和Spring集成 sessionFactory.openSession() 事务不生效问题

    问题描述 Mybatis和Spring集成,查阅官方文档,得知Spring总会为你处理事务. 官方文档连接:http://mybatis.org/spring/zh/transactions.html ...

  9. java spring 登录验证_浅析Spring Security登录验证流程源码

    一.登录认证基于过滤器链 Spring Security的登录验证流程核心就是过滤器链.当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了. SpringS ...

最新文章

  1. 女生读计算机专业好,女生选择计算机专业就读好吗?
  2. vwmare vSphere 4.0产品介绍
  3. aspose.words for java操作文档doc,设置一级二级三级标题以及段落表格等详情
  4. java的framework_JAVA FRAMEWORK
  5. TikZ学习笔记(三)图形的标记与交点
  6. 程序员修炼道路上的“葵花宝典”——博文视点大讲堂42期快乐结束
  7. 深入理解 ASP.NET 动态控件 (Part 1 - 感性认识)
  8. 软件开发工作过程中的一些总结
  9. 怎么读取二代身份证UUID----在STM32+CLRC663平台试验成功
  10. CMOS Image Sensor的接口硬件设计(DVP/MIPI CSI)
  11. 微信小程序分享/转发功能方法
  12. 威漫哨兵机器人_漫威:哨兵机器人天下无敌?这几位变种人就不把他们放在眼里...
  13. npm WARN using --force Recommended protections disabled.
  14. Linux下ppp拨号+电信3G模块
  15. 权变理论计算机管理理论,权变理论视角的教育管理研究
  16. linux2T硬盘分区命令,linux系统使用parted命令对大于2T的硬盘进行分区教程
  17. python各类地图绘制
  18. 图像操作(反差,混合,调整图像亮度与对比度,绘制文字)
  19. TA100 T3.7 TB(D)R
  20. 大数据实时传输组件Maxwellmaxwell中遇到的问题

热门文章

  1. 想进Google,先来做做Google招聘题
  2. Windows环境下安装RabbitMQ(官方文档中文版)
  3. 思维方式-《知识的边界》书中的精髓:互联网对知识的影响以及利用互联网获得更多知识的方法。
  4. Linux unrar命令如何按目录解压rar文件
  5. INSERT INTO SET
  6. 内网架设FTP服务器(serv-u)
  7. 关于身份认证中的Authenticator及AuthenticationStrategy
  8. [Jzoj] 1285. 奶酪厂
  9. TCP延迟确认机制和SACK
  10. 近30所高校,获教育部点名表扬!