最近在學(xué)習(xí)ssi,還處于非常基礎(chǔ)的階段。在做練習(xí)項(xiàng)目的時(shí)候忽然想到一直只知道框架整合中Spring主要負(fù)責(zé)事務(wù)管理、安全等方面的,但是Spring是否真的是進(jìn)行了事務(wù)管理。我做了一個(gè)小測試,在ibatis中將子表insert語句寫成錯(cuò)誤的語句,主表的插入語句是正確的。如果spring進(jìn)行了事務(wù)管理,在主表先完成了insert操作后,當(dāng)子表發(fā)生錯(cuò)誤,將會(huì)調(diào)用rollback方法,也就是說主表做的insert操作將會(huì)無效,兩張表都恢復(fù)到操作前的狀態(tài)。但我查看數(shù)據(jù)庫表中的數(shù)據(jù)后發(fā)現(xiàn)未發(fā)生原來預(yù)想的結(jié)果,主表的信息改變了,子表沒改,這實(shí)在是很困惑啊。
我使用的BeanNameAutoProxyCreator自動(dòng)創(chuàng)建代理的,查看了一下配置文件后才知道原來沒有在自動(dòng)代理的interceptorAttributes中沒有對(duì)相應(yīng)的manager層進(jìn)行代理。看來我還是不明白Spring的事務(wù)代理啊,只是按部就班地寫代碼,而不懂代碼的意思,是沒有一點(diǎn)樂趣的
我使用的BeanNameAutoProxyCreator自動(dòng)創(chuàng)建代理的,查看了一下配置文件后才知道原來沒有在自動(dòng)代理的interceptorAttributes中沒有對(duì)相應(yīng)的manager層進(jìn)行代理。看來我還是不明白Spring的事務(wù)代理啊,只是按部就班地寫代碼,而不懂代碼的意思,是沒有一點(diǎn)樂趣的