1. 檢查你方法是否是public的。html
2. 你的異常類型是否是unchecked異常。空指針異常是unchecked異常
若是我想check異常也想回滾怎麼辦,註解上面寫明異常類型便可。mysql
@Transactional(rollbackFor={Exception.class.RuntimeException.class})
相似的還有norollbackFor,自定義不回滾的異常。spring
另外 若是已經在service中進行了try catch 操做 因爲已經被抓獲異常 故事務也不會回滾sql
3. 數據庫引擎要支持事務,若是是mysql,注意表要使用支持事務的引擎,好比innodb,若是是myisam,事務是不起做用的。數據庫
4. 是否開啓了對註解的解析spa
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
5. spring是否掃描到你這個包,以下是掃描到org.test下面的包指針
<context:component-scan base-package="org.test" ></context:component-scan>