Srping AOP 声明式事务管理 业务层重构 Junit遇到的问题

今天遇到的问题如下:

oa项目中,使用到了Spring的AOP对Manager Layer的CUD操作进行了声明式事务管理,相关代码如下:

<!-- 配置事务的传播特性 -->
 	<tx:advice id="txAdvice" transaction-manager="transactionManager" >
 		<tx:attributes>
 			<tx:method name="add*" propagation="REQUIRED"/>
 			<tx:method name="del*" propagation="REQUIRED"/>
 			<tx:method name="update*" propagation="REQUIRED"/>
 			<tx:method name="*" read-only="true"/>
 		</tx:attributes>
 	</tx:advice>
 	
 	<!-- 配置哪些类哪些方法使用事务 -->
 	<aop:config>
 		<aop:pointcut id="allManagerMethod" expression="execution(* com.hiaward.oa.manager.*.*(..))"/>
 		<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
 	</aop:config>

 

之前测试过一个OrganizationManagerImpl时CUD操作都是成功的。但今天在测试一个新的Manager Layer PersonManagerImpl的时候,却出现了如下的情况:

Hibernate: insert into T_Person (name, sex, age, address, duty, phone, org_id) values (?, ?, ?, ?, ?, ?, ?)

但对应的表 t_person 里边却没有这条记录,当时第一反映就是事务的问题,于是返回头去测试了下原来 OrganizationManagerImpl的add*方法,居然也是同样的情况,这叫我有点迷,为什么呢?肯定是自己在这中间改了什么设置,是什么呢? 噢,当我看到<aop:pointcut id="allManagerMethod" expression="execution(* com.hiaward.oa.manager.*.*(..))"/>这句时,一下子想到了,由于一开始的设计问题,我曾对Manager Layer的包名进行了重构,把原来的包名 com.hiaward.oa.manager 重构为 现在的 com.hiaward.oa.managers 而配置文件中的相关部分却忘记了重构,所以导致了这个问题。于是按照想法改了过来,重新测试2个 *ManagerImpl,均成功通过。

总结:当遇到这个问题的时候,一开始定位到了是事务的问题,后来依次寻源,终于找到症结。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值