ssm事务配置启动报错处理,事务配置及使用注意事项

公司项目划分比较明细,当对用户进行删除或者修改时,就会对多张表进行操作,为了保证数据的:
1.原子性(Atomicity
2.一致性(Consistency)
3.持久性(Durability)
一 . 在public 方法上加 @Transactiona 注解 (启动报错)
在这里插入图片描述
原因是:spring jar 包引入不一致导致;(解决办法是:修改版本一致)
在这里插入图片描述
二 .事务详细配置:(采用以下配置方式,不使用注解方式,自定义配置方法名即可)

	<!-- 配置事务管理器 -->
	<bean
			id="transactionManager"
			class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
			p:dataSource-ref="dataSource" />

	<!-- 启用事务注解 -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	<tx:advice
			id="txAdvice"
			transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="insert*" />
			<tx:method name="delete*" />
			<!-- 如果超过五秒,说明程序需要优化,太久导致用户交互差 -->
			<tx:method name="search*" read-only="true" timeout="5" />
			<tx:method name="update*" read-only="true" timeout="5" />
			<!-- 没有以上面方法名开头的,统一不开事务 -->
		</tx:attributes>
	</tx:advice>
	<aop:aspectj-autoproxy />
	<!-- 配置关联事务切入点和事务属性 -->
	<aop:config>
		<aop:pointcut id="transactionPointCut" expression="execution(* com.lexiaotong.www.service.*.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointCut" order="1" />
		<!-- dataSourceExchange : 数据源 或 已配置 的多数据源 -->
		<aop:advisor advice-ref="dataSourceExchange" pointcut-ref="transactionPointCut" order="1"/>
	</aop:config>

调用回滚方式:
1.必须是 public 修饰
2.在service 层调用 controller层调用无效

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

采用ssm框架,当以上事务都没问题的时候,还是报找不到事务的时候:(如图)
在这里插入图片描述
3.检查springMVC扫描配置:(将service 服务层拦截)
原因:当springMVC重复扫描service层的时候,回导致事务失效
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190731112317231.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值