@Transactional事务生效条件与样例
生活随笔
收集整理的這篇文章主要介紹了
@Transactional事务生效条件与样例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@Transactional事務生效條件
@Transactional注釋的方法,不能是private修飾
@Transactional注釋的方法,必須是有接口的方法實現(通用的Spring面向接口編程的套路)
@Transactional注釋的方法,必須要通過接口的方式調用,才能生效(我們知道,注解的本質也是代理,同一個類中直接調用本類的方法,是不會產生代理的,所以注解就都不會生效)
一般專門要留一個包來存放事務的service;(我一般用后綴manager來命名這個包)
然后其他service要調的時候通過接口的方式直接掉這個事務service
樣例:
@Service public class QuickManagerImpl implements QuickManager { //這里的value = "transactionManager"是下面配置了聲明式事務了//這里的rollbackFor = BusinessException.class是如果方法中拋出自定義的異常,就回滾@Transactional(value = "transactionManager", rollbackFor = BusinessException.class)@Overridepublic boolean addDefaultData(Long id) {try {quickMapper.insert(XXX);quickMapper.insert(XXXX);quickMapper.insert(XXXXX);return true;} catch (Exception e) {logger.error("addDefaultData error", e);}throw new BusinessException(AppBusinessErrorCode.DAO_ERROR);} } <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/><!-- dataSource配置數據源,url,userName,psw等 --></bean><tx:annotation-driven transaction-manager="transactionManager"/>向上面這樣定義一個事務的service,然后其他service再注入這個QuickManager接口,然后調用,注解就會生效的
總結
以上是生活随笔為你收集整理的@Transactional事务生效条件与样例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器启动报错:One or more
- 下一篇: 布尔类型(boolean/Boolean