Spring事務失效的8個原因

2021-10-19 23:04:40 字數 912 閱讀 3718

1、mysql資料庫myisam不支援事務,**層面做再多也無用。

2、註解@transactional作用在非public方法上。

3、註解@transactional作用在public方法上,但是該類沒有被spring管理,比如沒有在類上加註解@service

4、註解@transactional作用在public方法a上,方法b沒有被註解@transactional作用,方法b呼叫方法a,controller層呼叫方法b。

原因是在同乙個類之中,方法互相呼叫,切面無效 ,而不僅僅是事務。這裡事務之所以無效,是因為spring的事務是通過aop實現的。

5、使用註解@transactional(propagation = propagation.not_supported)作用在public方法上。(propagation.not_supported:表示不以事務執行)

6、註解@transactional作用在public方法上,使用try-catch,但沒有丟擲執行時異常runtimeexception(丟擲其他型別異常或不丟擲異常都不會回滾)。

7、註解@transactional(rollbackfor = exception.class)作用在public方法上,使用try-catch,但丟擲執行時異常runtimeexception。

rollbackfor預設值為runtimeexception.class

8、所使用的資料來源是否載入了事務管理器

借鑑:

Spring事務失效的 8 大原因

用 spring 的 transactional註解控制事務有哪些不生效的場景?1 資料庫引擎不支援事務 這裡以 mysql 為例,其 myisam 引擎是不支援事務操作的,innodb 才是支援事務的引擎,一般要支援事務都會使用 innodb。根據 mysql 的官方文件 從 mysql 5.5....

Spring事務失效的 8 大原因

1 資料庫引擎不支援事務 這裡以 mysql 為例,其 myisam 引擎是不支援事務操作的,innodb 才是支援事務的引擎,一般要支援事務都會使用 innodb。根據 mysql 的官方文件 從 mysql 5.5.5 開始的預設儲存引擎是 innodb,之前預設的都是 myisam,所以這點要...

Spring事務失效的 8 大原因

用 spring 的 transactional 註解控制事務有哪些不生效的場景?但是我覺得還是總結得不夠全,今天棧長我再總結一下,再延著這位粉絲的總結再補充完善一下,不用說,我肯定也不見得總結全,但希望可以幫忙有需要的人。資料庫引擎不支援事務 這裡以 mysql 為例,其 myisam 引擎是不支...