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