3 回答

TA貢獻(xiàn)1884條經(jīng)驗 獲得超4個贊
@Transational
因為不能從另一個bean調(diào)用私有方法(例外是反射),所以它們的 @Transactional
注釋沒有被考慮在內(nèi)。 如果該方法是公共的,但它是從同一個bean調(diào)用的,那么它也不會被考慮(只有在使用了Spring代理AOP(默認(rèn))時,這個語句才是正確的)。

TA貢獻(xiàn)1818條經(jīng)驗 獲得超8個贊
@Transactional
public class Bean { public void doStuff() { doTransactionStuff(); } @Transactional public void doTransactionStuff() { }}
Bean bean = (Bean)appContext.getBean("bean");bean.doTransactionStuff();
Bean bean = (Bean)appContext.getBean("bean");bean.doStuff();
注意:在代理模式下(這是默認(rèn)的),只有通過代理傳入的“外部”方法調(diào)用才會被截獲。這意味著“自調(diào)用”,即在目標(biāo)對象中調(diào)用目標(biāo)對象的其他方法的方法,即使被調(diào)用的方法被標(biāo)記為在運行時也不會導(dǎo)致實際事務(wù)。 @Transactional
!
考慮使用AspectJ模式(請參見下面),如果您希望自己的調(diào)用也與事務(wù)一起包裝。在這種情況下,首先不會有代理;相反,目標(biāo)類將被“編織”(即它的字節(jié)代碼將被修改),以便 @Transactional
任何方法上的運行時行為。
- 3 回答
- 0 關(guān)注
- 895 瀏覽
添加回答
舉報