1. 程式人生 > >[email protected]事務失效

[email protected]事務失效

弄了一個專案,驗證事務的時候,老是不會滾,最後竟然發現是配置檔案配錯了,應該把事務配置在spring.xml中,

配置檔案掃描的問題 因為spring的容器(applicationContext)和springMVC的(applicationContext)是不同的。

spring容器載入得時候,優先載入ServletContextListener(對應spring.xml)產生的父容器,而springMVC(對應springMVC.xml)產生的是子容器。子容器Controller進行掃描裝配時裝配的@Service註解的例項是沒有經過事務加強處理,

即沒有事務處理能力的Service。而父容器進行初始化的Service是保證事務的增強處理能力的。如果不在子容器中將Service除去掉,此時得到的將是原樣的無事務處理能力的Service。

所以,我們應把掃描Service的工作放在spring.xml中。讓Service和事務註解存在於同一個容器中,這樣配置的事務註解就能起作用了。也就是說把這個配置從

springMVC.xml中移到spring.xml的配置中。事務不回滾的問題就能解決了。

如果還有其他的不清楚的可以看我轉載的部落格,寫的很清楚。