`
flysnowxf
  • 浏览: 577748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring事务管理的一个知识盲点

阅读更多
使用spring事务时,事务所作用的方法需要抛出异常,这样transactionManager才能判断该方法是否有问题。所以该方法不要自己捕获了异常,不然transactionManager认为它是成功的。
例如:
<aop:pointcut id="allService" expression="execution(* cn.flysnowxf.app.service.*.*(..) )" />

UserService被事务作用,addUser方法为:
public void addUser() {
		try {
			userDao.addUser(99000, "fxf_fxf_fxf", "passwd");
			userDaoBackup.addUser(88777, "fxf_backup", "passwd");
			userDao.addUser(88000, "fxf_fxf_fxf", "passwd");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

因为函数体内已捕获异常,即使出现了数据库异常,transactionManager也认为它是成功的,这样事务就不起作用了。
transactionManager捕获的原理:
TransactionDefinition td = new TransactionDefinition();
TransactionStatus ts = transactionManager.getTransaction(td);
try
{
 //do sth
 transactionManager.commit(ts);
}
catch(Exception e){transactionManager.rollback(ts);}

所以要让transactionManager来捕获异常。即事务控制的方法抛出异常即可:
public void addUser() throws RuntimeException {
		userDao.addUser(99000, "fxf_fxf_fxf", "passwd");
		userDaoBackup.addUser(88777, "fxf_backup", "passwd");
		userDao.addUser(88000, "fxf_fxf_fxf", "passwd");
	}

transactionManager默认只捕获RuntimeException以及其子类。可通过rollback-for进行设置,如:
<tx:advice id="txAdvice" transaction-manager="springTransactionManager">
		<tx:attributes>
			<tx:method name="add*" rollback-for="Exception"/>
		</tx:attributes>
	</tx:advice>

这样只要抛出了Exception异常,transactionManager就会回滚事务。
分享到:
评论

相关推荐

    Java+框架最全面试题

    Struts2是另一个常见的JavaWeb框架,"Struts2面试题"可能会考察Action、Interceptor、结果类型、全局异常处理等知识点。熟悉Struts2的架构,能够编写Action类,理解Interceptor的工作机制,对处理Web请求有实际经验...

    SSM+Vue学生在线考试系统答辩PPT.pptx

    用户可以通过错题表识别自己的知识盲点,针对性地进行复习和提升。 系统操作流程清晰明了,用户首先通过登录页面验证身份后才能使用各项功能。管理员、老师和用户的角色分工明确,各自拥有相应的操作权限,确保系统...

    accp5.0y2毕业考试笔试题及答案第2套

    ACCP(北大青鸟APTECH计算机教育的认证软件工程师课程)5.0Y2是北大青鸟在某一时期推出的IT职业技能培训课程的一个版本。这个压缩包文件包含了该课程的毕业考试笔试题目及其对应的答案,具体为“第2套”。这通常是...

    java外包笔试题两套.zip

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。外包公司常常会用Java笔试题来评估应聘者的技能水平。...对于学习者来说,这些题目同样能帮助他们发现知识盲点,提升技术水平。

    计算机专业 生产实习报告

    以及Spring框架,这是一个全面的企业级应用框架,提供了AOP、DI、事务管理等功能。 4. 实习感受 通过实习,学生们不仅提升了专业技能,还增强了人际交往和团队合作的能力。他们有机会将理论知识应用于实际问题解决...

    12年老java程序员整理收集的面试题合集

    Java编程语言自1995年发布以来,一直保持着广泛的应用和热度,尤其在企业级应用开发领域。作为一位有着12年经验的老Java...通过这些题目,不仅可以检验个人的技术水平,还能帮助找出知识盲点,为提升技能打下坚实基础。

    程序员面试题合集.rar

    《程序员面试题合集》是针对应届毕业生及有志于在IT行业发展的程序员们的一份珍贵资源。...这个压缩包中的面试题可以帮助你模拟实战,找出自己的知识盲点,有针对性地进行复习和练习。祝你在面试中取得理想的成绩!

    java面试总结以及1000+道面试题

    Java面试是每位求职者在进入IT行业,特别是Java开发领域时必须经历的重要环节。...通过对这些题目的学习和解答,不仅可以巩固已有的知识,还能发现自己的知识盲点,从而有针对性地进行补充和提升。

    黑马入学测试题和答案

    这样的测试有助于找出知识盲点,为系统性学习提供方向,同时也能提高解决问题的能力,对准备面试或者实际工作都有很大帮助。 总的来说,"黑马入学测试题和答案"是一份宝贵的自我评估工具,它可以帮助IT新手定位自己...

    CCAT_Java考试认证试题

    Java CCAT考试认证试题是针对Java开发者的一项专业评估,它旨在测试考生在Java编程语言、设计模式、软件工程原则...这个压缩包中的试题和答案就是这样的一个实践工具,帮助考生检验自己的学习成果,并找出知识盲点。

    java练习题,有用的

    通过阅读和解答这些题目,开发者可以检查自己的理解程度,找出知识盲点,并通过实践来深化理解。 总的来说,这份Java练习题集是一个宝贵的资源,无论是对初学者还是经验丰富的开发者来说,都可以从中受益。它提供了...

    java推荐资格考试题

    通过复习和解答这些Java推荐资格考试题,开发者不仅可以巩固已有知识,还能发现自己的知识盲点,进一步提升解决问题的能力。尽管题目的年代可能稍早,但它们仍然可以作为现代Java开发者的自我提升工具,因为Java的...

    北大青鸟S2内部测试

    【北大青鸟S2内部测试】是北大青鸟教育机构为学员提供的ACCP6.0...总之,北大青鸟S2内部测试是对学员在编程技能、软件工程理论和实践操作上的综合考验,通过测试,学员可以明确自己的知识盲点,以便进一步巩固和提升。

    java笔试题大集合

    通过这个Java笔试题大集合,求职者可以系统地复习和测试自己的技能,找出知识盲点,提升技术水平,为面试做好充分准备。同时,答案部分能帮助求职者自我校验,加深理解和记忆。在实际学习过程中,结合项目实践,将...

    java开发试题

    Java开发试题是评估和提升Java...通过这些试题,开发者不仅可以检验自己的技术水平,还能找出知识盲点,进一步提升编程能力和项目实战经验。对于准备面试或进行团队内部技术考核来说,这些试题都是非常有价值的资源。

    《JavaWeb程序设计案例教程》_课后习题---(复习3).rar

    《JavaWeb程序设计案例教程》_课后习题---(复习3).docx文档应提供了详细的习题解答,帮助学生检验自己的学习成效,找出知识盲点,从而有针对性地进行查漏补缺。在期末考试前,系统地回顾和练习这些内容,将有助于...

    传智播客入学测试题附答案

    【传智播客入学测试题附答案】是一个与IT教育培训相关的资源,主要针对想要进入传智播客学习的学员。传智播客是一家知名的IT教育机构,提供多种编程语言、前端开发、后端架构等技术课程。这个压缩包很可能是为了帮助...

    经典面试100题程序员

    通过解答这些问题,不仅可以检验个人的技术功底,还能暴露知识盲点,从而有针对性地进行自我提升。 【标签】"程序员"是指从事软件开发、维护和优化的专业人员,他们负责编写、测试和调试代码,以实现特定的功能。...

    java笔试题大集合及答案(另附各大公司笔试题)

    1. Spring:依赖注入、AOP、事务管理等核心概念。 2. MyBatis:SQL映射文件、动态SQL、缓存机制等。 3. Struts或Spring MVC:MVC设计模式的应用。 通过这个大集合,考生可以系统地复习Java的各项核心技术和常见面试...

Global site tag (gtag.js) - Google Analytics