通過@Transactional注解方式,可將事務織入到相應public方法中,實現事務管理。
● propagation:用于設置事務傳播屬性。該屬性類型為Propagation枚舉,默認值為Propagation.REQUIRED。
● isolation:用于設置事務的隔離級別。該屬性類型為Isolation枚舉,默認值為Isolation.DEFAULT。
● readOnly:用于設置該方法對數據庫的操作是否是只讀的。該屬性為boolean,默認值為false。
● timeout:用于設置本操作與數據庫連接的超時時限。單位為秒,類型為int,默認值為-1,即沒有時限。
● rollbackFor:指定需要回滾的異常類。類型為Class[],默認值為空數組。當然,若只有一個異常類時,可以不使用數組。
● rollbackForClassName:指定需要回滾的異常類類名。類型為String[],默認值為空數組。當然,若只有一個異常類時,可以不使用數組。
● noRollbackFor:指定不需要回滾的異常類。類型為Class[],默認值為空數組。當然,若只有一個異常類時,可以不使用數組。
● noRollbackForClassName:指定不需要回滾的異常類類名。類型為String[],默認值為空數組。當然,若只有一個異常類時,可以不使用數組。
需要注意的是,@Transactional若用在方法上,只能用于public方法上。對于其他非public方法,如果加上了注解@Transactional,雖然Spring不會報錯,但不會將指定事務織入到該方法中。因為Spring會忽略掉所有非public方法上的@Transaction注解。
若@Transaction注解在類上,則表示該類上所有的方法均將在執行時織入事務。
復制trans_sale項目,新項目trans_sale_annotation
1、聲明事務管理器
2、 開啟注解驅動
transaction-manager:事務管理器bean的id
3、業務層public方法加入事務屬性