Spring 中的一些註解屬性

 用 spring 事務管理器,由spring來負責數據庫的打開,提交,回滾.默認遇到運行期例外(throw new RuntimeException("註釋");)會回滾:unchecked,需要捕獲的例外(throw new Exception("註釋");)不會回滾:checked.
需要修改規則加入註釋:
@Transactional(rollbackFor=Exception.class) //指定回滾,需要捕獲的例外(throw new Exception("註釋");)不會回滾
    public void methodName() {
       throw new Exception("註釋");
       
    }
@Transactional(noRollbackFor=Exception.class)//指定不回滾,遇到運行期例外(throw new RuntimeException("註釋");)會回滾
    public ItimDaoImpl getItemDaoImpl() {
        throw new RuntimeException("註釋");
    }
//事務傳播屬性
    @Transactional(propagation=Propagation.REQUIRED) //如果有事務,那麼加入事務,沒有的話新建一個(不寫的情況下)
    @Transactional(propagation=Propagation.NOT_SUPPORTED) //容器不爲這個方法開啓事務
    @Transactional(propagation=Propagation.REQUIRES_NEW) //不管是否存在事務,都創建一個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務
    @Transactional(propagation=Propagation.MANDATORY) //必須在一個已有的事務中執行,否則拋出異常
    @Transactional(propagation=Propagation.NEVER) //必須在一個沒有的事務中執行,否則拋出異常(與Propagation.MANDATORY相反)
    @Transactional(propagation=Propagation.SUPPORTS) //如果其他bean調用這個方法,在其他bean中聲明事務,那就用事務.如果其他bean沒有聲明事務,那就不用事務.
   
    /*public void methodName(){
        update();//本類的修改方法 1
            otherBean.update();//調用其他類的修改方法
        update();//本類的修改方法 2
    }
    other失敗了不會影響 本類的修改提交成功
    本類update的失敗,other也失敗
    */
  @Transactional(propagation=Propagation.NESTED)
  @Transactional (propagation = Propagation.REQUIRED,readOnly=true) //readOnly=true只讀,不能更新,刪除
@Transactional (propagation = Propagation.REQUIRED,timeout=30)//設置超時時間
@Transactional (propagation = Propagation.REQUIRED,isolation=Isolation.DEFAULT)//設置數據庫隔離級別
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章