社区
J2ME
帖子详情
spring service事物,service调用service,不回滚
跑跑鱼
2010-11-12 10:18:21
如题,spring事物在service层,我在一个service层调用另一个service的方法,这样事物回滚就不管用了。请问这个问题怎么解决呢
...全文
2202
15
打赏
收藏
spring service事物,service调用service,不回滚
如题,spring事物在service层,我在一个service层调用另一个service的方法,这样事物回滚就不管用了。请问这个问题怎么解决呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
china_agh20
2011-02-22
打赏
举报
回复
butaimingabi
火龙果被占用了
2010-11-16
打赏
举报
回复
如果要抛出非 RuntimeException 的受检查异常的话,需要在 Spring 指定 rollback for
跑跑鱼
2010-11-16
打赏
举报
回复
我的一个service层方法可以被多次调用,所有出现这样的需求。的确,这种方法存在问题,有待改进,谢谢楼上的提醒
helloworld52
2010-11-16
打赏
举报
回复
http://www.examda.com/Java/zhuangye/20100309/090149245.html
sotom
2010-11-16
打赏
举报
回复
[Quote=引用 10 楼 jsjxieyang 的回复:]
问题已经解决了。还是分享一下吧
spring 这样配置:propagation="REQUIRED",在事物层想要回滚必须有异常抛出,而且自己不能捕获,抛出的异常必须是runtimeexception.
我spring 不回滚就是因为我强制抛了一个非runtimeexception的异常。
仍然感谢各位的回答。
[/Quote]
业务层调用业务层,不会出现事务嵌套么???,你这样开发有问题的。
跑跑鱼
2010-11-16
打赏
举报
回复
问题已经解决了。还是分享一下吧
spring 这样配置:propagation="REQUIRED",在事物层想要回滚必须有异常抛出,而且自己不能捕获,抛出的异常必须是runtimeexception.
我spring 不回滚就是因为我强制抛了一个非runtimeexception的异常。
仍然感谢各位的回答。
gaoxulaiguo
2010-11-16
打赏
举报
回复
打酱油?楼主懂事务的传播性吗?
gaoxulaiguo
2010-11-15
打赏
举报
回复
你研究下SPRING的事务传播性
米土木木
2010-11-15
打赏
举报
回复
Spring有个配置文件提交事物
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="baseDao" abstract="true" class="com.comm.HibernateBaseDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="goodsDao" class="com.daoimpl.GoodsDaoImpl" parent="baseDao"></bean>
<bean id="goodstypeDao" class="com.daoimpl.GoodstypeDaoImpl" parent="baseDao"></bean>
<bean id="usersDao" class="com.daoimpl.Users2DaoImpl" parent="baseDao"></bean>
<bean id="goodsService" class="com.serviceimpl.GoodsServiceImpl">
<property name="igoodsDao" ref="goodsDao"></property>
<property name="igoodstypeDao" ref="goodstypeDao"></property>
<property name="iusers2Dao" ref="usersDao"></property>
</bean>
<bean id="goodsAction" class="com.struts2.action.GoodsAction">
<property name="igoodsService" ref="goodsService"></property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" parent="baseDao"></bean>
<tx:advice id="mytx" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor advice-ref="mytx" pointcut="execution(* com.iservice.*.*(..))"/>
</aop:config>
</beans>
跑跑鱼
2010-11-15
打赏
举报
回复
我发现大家大部分都是打酱油的吧
che253604783
2010-11-13
打赏
举报
回复
要么是你用的不对,要么就把事物再往service上提一层
跑跑鱼
2010-11-13
打赏
举报
回复
自己找了两篇文章
http://ajava.org/course/open/13028.html
http://www.examda.com/Java/zhuangye/20100309/090149245.html
安心逍遥
2010-11-13
打赏
举报
回复
这方面还不是很懂,帮顶。祝楼主好运
tubage408
2010-11-12
打赏
举报
回复
事务配置,具体代码
sound9world
2010-11-12
打赏
举报
回复
会这样嘛 ...这样用过 不过忘记测试过没了。。mark下
Spring
service
中的方法互相
调用
问题
service
中的方法互相
调用
问题
service
的方法互相
调用
问题分为:
调用
该
service
的方法
调用
其他
service
的方法 一、
调用
该
service
的方法
spring
的事务管理使用AOP实现的 AOP实现原理是递归
调用
所有加强方法,最后
调用
被代理对象的方法 如果
调用
该
service
对象的其他方法,其this对应的就是被代理对象,也就是没有加强方法,其配置的事务管理是不会开启的,只能依靠
调用
它的方法来开启事务。 二、
调用
其他
service
的方法 原理同上,但是该
service
对象应用
Spring
控制事务
回滚
调用
本类方法导致传播行为失效,同一个
Service
的两个方法之间
调用
,就会出现这个问题,原因还是在代理对象这里,我们期待的
调用
是一个代理类的
调用
,但是我们若是直接在方法中内部
调用
,不好意思,被
调用
的方法的事务失效,没有被 AOP 增强。当添加了注解或者全局事务配置了路径,但是需要用到事务的方法所在的类没有注入到
Spring
容器中,这样事务也不会生效,通常我们都是添加到业务逻辑处理层,通常都是添加。:在业务代码中,需要对异常单独进行处理,异常不会抛出,但需要事务
回滚
的情况,这个时候就需要手动
调用
回滚
。
Spring
中的事务
回滚
Spring
中事务的
回滚
与异常的关系
详解
spring
事务失效和
回滚
失败的场景
文章目录详解
spring
事务失效和
回滚
失败的场景前言一 、事务不生效1.访问权限问题2. 方法用final修饰3.方法的内部
调用
3.1 新加一个
Service
方法3.2 在该
Service
类中注入自己3.3 通过AopContent类4.未被
spring
管理5.多线程
调用
6.表不支持事务7.未开启事务 详解
spring
事务失效和
回滚
失败的场景 前言 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据或者执行多条sql。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般
Spring
事务
回滚
的两种方法
使用 来配置自动
回滚
,可以配置在类上,也可以配置在方法上(作用域不同),但对final或private修饰的方法无效,且该类必须是受
spring
所管控的。 若被配置的方法或类抛出了异常,则事务会被自动
回滚
,除非你在该方法中手动捕获了异常。可以使用 来设定针对特定的异常进行事务
回滚
,如果不设置则默认会
回滚
RuntimeException and Error (参考自源码内文档)。 通过注入 来手动开启事务,手动
回滚
事务,用于抛出异常被catch后,进行手动
回滚
。...
J2ME
13,100
社区成员
26,495
社区内容
发帖
与我相关
我的任务
J2ME
Java J2ME
复制链接
扫一扫
分享
社区描述
Java J2ME
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章