java.lang.IllegalStateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常

这个错误,网上说的原因一大推,反正我这个出的问题 是因为 虽然我在 spring 里把事务都配置好了,结果运行就出现这个错误,看看配置都没什么问题,都是网上 案例 照 写编码的,还是错的,结果发现是因为 我 在拿 spring 中 的 service 或 dao bean 时 拿的方式错了。

  

FooService fooService = ctx.getBean("xxxxDao",FooService.class); 
//不能直接中bean中拿目标代理对象,而是从事务bean中去拿目标代理对象,这样拿到的代理才有spring 事务管理
//FooService fooService = (FooService) ctx.getBean("fooService"); ---》 如上边 spring 中是对 FooService 接口 的 子类 xxxFooService 进行 事务管理,原来习惯直接
FooService fooService = (FooService) ctx.getBean("fooService"); -- fooService 为spring中的bean 其实错的,拿到的虽然也是 子类 xxxFooService 的bean ,但是这个 bean是没有 spring 事务管理的,那怎么才能拿到有spring 管理的bean呢,即 FooService fooService = ctx.getBean("xxxxDao",FooService.class); -- 这个 xxxxDao 为 TransactionProxyFactoryBean 的bean 或 是其 子类 bean(当其为abstract时必须拿其子类bean)
上边第一个参数 为 事务bean ,第二个参数 为我们想要 的 代理目标对象(必须用接口类,不可用具体实现类),这样拿到的 service 才有 spring 事务管理,改正后上边的报错就不会出现了。 注: 上边的这个报错问题一般都是 没有spring 事务管理才会报的错,所以遇到这种问题先看看自己spring配置的事务 是否有问题,再看看自己拿的事务管理对象bean 的拿 法 是否有问题,上边例子中就是配置没问题,拿法有问题,
   诸如还有其他的一些问题 能造成上边的错误,但 其他的问题都 是要么配置错误要么拿 bean方式错误。再举例:假如 用拦截器 进行事务管理配置,假如 :
    
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<!--一切 和 *Service 有关的都会被拦截-->
<value>DefaultFooService</value>
<!--<value>*Service</value>-->
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
如上边拦截 位置 应该是 拦截 所有对象 名 带有Service的类,假如 要事务管理的对象 在spring 中 bean 的名字 叫xxx 那此就不会 被拦截,那最终就不会有事务管理,那也会报上边的错误。那因为 要事务管理的对象
在spring中bean id 叫 xxx ,那 此配置 *xxx 或 直接就 xxx 就能正常 拦截了。就不会报上边错误了。同理就是说明一个问题 ,只要 要spring 事务 管理的 bean 对象 被 拿取到时,再进行 操作时如果 这个对象本身 不在 事务管理中的 话就会报上边的问题。这个对象怎么会没有事务管理,要么 配置错误,要么拿这个bean 对象 时错误。
 
												

spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常的更多相关文章

  1. spring事务管理出错。No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy ...

  2. 报错解决:No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

    大概分析一般使用了注解才会报这方面的错 1.没有在spring的ApplicationContext.xml中开启注解事务 <!-- 开启注解事务 --> <tx:annotatio ...

  3. Spring framework3.2整合hibernate4.1报错:No Session found for current thread

    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransact ...

  4. Spring boot使用Redis时,报错,有redisTemplate和stringRedisTemplate两个bean?

    Error starting ApplicationContext. To display the auto-configuration report re-run your application ...

  5. spring管理hibernate4 transaction getCurrentSession为什么报错?

    hibernate4不支持你用hibernate3的 getcurrentSession,建议你用openSession

  6. 通过案例掌握Spring 管理事务的步骤及配置

    案例描述  通过完成生成订单业务,掌握事务处理.  需要d_order表和d_item表  订单生成时的业务逻辑:向d_order插入1条数据的同时,向t_item中插入若干条数据  这就是一个独立的 ...

  7. saltstack配置安装的一些关键步骤及安装时各种报错的分析

    以下其他仅做参考,官方网址才是安装重点:http://docs.saltstack.cn/topics/installation/rhel.html 与安装相关的一些文档或资料: 一.linux服务器 ...

  8. 跟着刚哥学习Spring框架--事务配置(七)

    事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...

  9. spring 实现事务配置的方式

    spring 中常用的两种事务配置方式以及事务的传播性.隔离级别 一.注解式事务 1.注解式事务在平时的开发中使用的挺多,工作的两个公司中看到很多项目使用了这种方式,下面看看具体的配置demo. 2. ...

随机推荐

  1. setTimeout和setImmediate到底谁先执行,本文让你彻底理解Event Loop

    笔者以前面试的时候经常遇到写一堆setTimeout,setImmediate来问哪个先执行.本文主要就是来讲这个问题的,但是不是简单的讲讲哪个先,哪个后.笼统的知道setImmediate比setT ...

  2. 常用的API和基础算法

    和数学相关 1,java.lang.Math类 abs(x):求绝对值 sqrt(x):求平方根 pow(x,y):求x的y次方 ceil(x):向上取整 floor(x):向下取整 round(x) ...

  3. JWT签发token

    目录 一. 认证的发展历程简介 二. JWT签发Token源码分析 2.1 JWT工作原理及简介 2.2 JWT生成token源码分析 返回目录 一. 认证的发展历程简介 这里真的很简单的提一下认证的 ...

  4. vnpy源码阅读学习(7):串在一起

    串在一起 我们已经分析了UI.MainEngine.EventEngine.然后他们几个是如何发挥作用的呢?我总结了一张图: 我们来具体的看看UI部分是如何跟EventEngine穿插起来的 \exa ...

  5. Matplotlib 精简实例入门

    Matplotlob 简明实例入门 通过几个实例,快速了解matplotlib.pyplot 中最为常见的折线图,散点图,柱状图,直方图,饼图的用法 如果您需要更为详细的内容,请参考官方文档: htt ...

  6. 【2019牛客暑期多校第一场】E题ABBA

    题目链接 大致题意 有(n+m)(n + m)(n+m)个字母A和(n+m)(n + m)(n+m)个字母B,组成一个长度为 2∗(n+m)2*(n + m)2∗(n+m)的字符串,并且使得字符串中有 ...

  7. 由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set

    2019-10-14 22:21:29 问题描述: 问题求解: 暴力求解必然会超时,那么就需要考虑数学的方法来降低时间复杂度了. public int atMostNGivenDigitSet(Str ...

  8. Linux Cgroup 入门教程:cpuset

    这是 Cgroup 系列的第四篇,往期回顾: Linux Cgroup 入门教程:基本概念 Linux Cgroup 入门教程:CPU Linux Cgroup 入门教程:内存 通过上篇文章的学习,我 ...

  9. Android之MVC、MVP、MVVM

    本文将详细阐述以下MVC.MVP.MVVM三种理念的定义 MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个 基本部分:模型(Model ...

  10. 朴素贝叶斯分类器(Naive Bayesian Classifier)

    本博客是基于对周志华教授所著的<机器学习>的"第7章 贝叶斯分类器"部分内容的学习笔记. 朴素贝叶斯分类器,顾名思义,是一种分类算法,且借助了贝叶斯定理.另外,它是一种 ...