如果在類上使用@Transactional,則整個類的所有方法都會啟用事務。那如果我希望類中的某些方法不啟用事務,那要怎么做?PS.方法級別的@Transactional太麻煩了,不是好的解決方法。另外配置切面的方式我也不喜歡,限定了要啟用事務的命名。
1 回答
已采納

o學者o
TA貢獻7條經(jīng)驗 獲得超5個贊
@Transactionalpublic?class?TestServiceBean?implements?TestService?{??? ????private?TestDao?dao;??? ????public?void?setDao(TestDao?dao)?{????????this.dao?=?dao; ????}??? ????@Transactional(propagation?=?Propagation.NOT_SUPPORTED)????public?List<Object>?getAll()?{????????return?null; ????}??? }
@Transactional(propagation=Propagation.REQUIRED)?
如果有事務, 那么加入事務, 沒有的話新建一個(默認情況下)
@Transactional(propagation=Propagation.NOT_SUPPORTED)?
容器不為這個方法開啟事務
@Transactional(propagation=Propagation.REQUIRES_NEW)?
不管是否存在事務,都創(chuàng)建一個新的事務,原來的掛起,新的執(zhí)行完畢,繼續(xù)執(zhí)行老的事務
@Transactional(propagation=Propagation.MANDATORY)?
必須在一個已有的事務中執(zhí)行,否則拋出異常
@Transactional(propagation=Propagation.NEVER)?
必須在一個沒有的事務中執(zhí)行,否則拋出異常(與Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS)?
如果其他bean調(diào)用這個方法,在其他bean中聲明事務,那就用事務.如果其他bean沒有聲明事務,那就不用事務.
添加回答
舉報
0/150
提交
取消