首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

spring 事务传播特性 测试 发现的有关问题

2013-11-23 
spring 事务传播特性 测试 发现的问题测试spring事务传播特性:????? 本类方法saveLoginInfoCall和storeSer

spring 事务传播特性 测试 发现的问题

测试spring事务传播特性:

??

??? 本类方法saveLoginInfoCall和storeServiceImpl类中的方法一致:

?? 测试代码:

?

??

    @Test    public void testTransaction() {        System.out.println(AopUtils.isAopProxy(loginServiceImpl));        System.out.println(loginServiceImpl.getClass().getName());        loginServiceImpl.saveLoginInfo("2000040", "2013-09-10 00:00:00.000", "2000040|张美霞test|saveLoginInfo");    }

?? 声明一下:saveLoginInfo()方法所在类为loginServiceImpl

?

?? 经测试发现,当saveLoginInfo()方法调用本类内的saveLoginInfoCall()方法后,然后抛出异常,本类内的方法saveLoginInfoCall()并没有插入数据库,而调用storeServiceImpl类的saveLoginInfoCall()方法则插入数据库;按照REQUIRES_NEW事物的传播特性来说,两个方法的出入都应该能成功(都是新起一个事物,在自己的事务内提交,在异常抛出之前就已经提交到数据库)。可是调用本类内的方法就是没有成功!

?

?

然后继续测试,把本类内和storeServiceImpl类内的方法saveLoginInfoCall()的事务注解全部改为NEVER,然后测试发现:在执行本类内的方法saveLoginInfoCall()时没有报错,而是在执行storeServiceImpl类的saveLoginInfoCall()方法时报错,安装NEVER的传播特性来说,在执行本类内的saveLoginInfoCall()方法时就会报错(NEVER事务传播特性为不支持事务,存在事务则抛出异常)

?

根据上面的可以总结为,当一个方法使用spring事务时,调用同一个类的另个使用spring事务的方法时候,被调用方法的事务不生效,可是为什么呢?现在还没找到下手寻找答案的线索!

热点排行