掌握 spring 中@transactional 的使用
關於@transactional失效的情況有很多種,,最容易讓人忽略的還是方法的自呼叫問題,如下**雖然寫了@transactional,但是testinsert()方法拋執行時異常時,並執行不會回滾操作:
@service
public class testserviceimpl implements testservice
@transactional
public void testinsert()
}
在預設的**模式下,只有目標方法由外部呼叫,才能被 spring 的事務***攔截。在同乙個類中的兩個方法直接呼叫,是不會被 spring 的事務***攔截,因此註解失效。
最簡單的解決方式就是引入otherservice,將testinsert()方法放到otherservice中去實現,達到呼叫外部方法的效果,或者使用 aspectj取代spring aop。
Transactional註解怎麼使用?
1 在方法或者類上都可以新增。如果在類上新增,則此類中的所有方法都會執行事務,不推薦,因為可能後續接手開發的小夥伴新增方法的時候根本不需要執行事務 2 觸發事務回滾有兩種方式 3 推薦在註解上新增 transactional rollbackfor 如果不加的話,方法預設只會在丟擲runtimeex...
使用 Transactional時候的注意點
使用 transactional時候的注意點 1.確認有如下配置 2.readonly能不用就不能 3.巢狀事務中盡量少用required new,除非某些操作無論如何都要持久化 4.只有uncheck exception才會使事務回滾,checked exception不會使用回滾。如果要在che...
使用 Transactional時候的注意點
使用 transactional時候的注意點 1.確認有如下配置 2.readonly能不用就不能 3.巢狀事務中盡量少用required new,除非某些操作無論如何都要持久化 4.只有uncheck exception才會使事務回滾,checked exception不會使用回滾。如果要在che...