springboot2-事物回滾-綜合運用(五)

  方式一:service的public方法上面加上@Transactional(rollbackFor = Exception.class), 默認只有非檢測性異常才生效-RuntimeException ,controller直接加上加入Transactional不會產生回滾,需要進行手動回滾操作

    @RequestMapping("/transactionalTest")
    @Transactional(rollbackFor=Exception.class)
    public String transactionalTest() {

         try {

            funMapper.update(entity);

            fun2Mapper.update(entity2);

         }catch(Exception e) {
             logger.error( e.getMessage(),e );
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();// 執行2個操作進行手動回滾操作,必須這樣才能回滾
        }

}

方式二: 手動創建事務,controller類下面添加註解DataSourceTransactionManager 

   //可以通過註解實現
   @Autowired
    private DataSourceTransactionManager txManager;

   DefaultTransactionDefinition def = new DefaultTransactionDefinition();
   def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);// 事物隔離級別,開啓新事務
   TransactionStatus status = txManager.getTransaction(def); // 獲得事務狀態

   try{
        //邏輯代碼,可以寫上你的邏輯處理代碼
        txManager.commit(status);
   }catch(Exception e){

        // logger.error( e.getMessage(),e );
        txManager.rollback(status);//執行2個操作進行手動回滾操作
   }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章