項目中的註解式事務配置不生效,在spring-mybatis文件中事務都已經配置好了可是就是不生效,最後發現是事務的加載順序沒有處理好,緣由以下:web
因爲採用的是SpringMVC、 MyBatis,故統一採用了標註來聲,明Service、Controller
因爲服務器啓動時的加載配置文件的順序爲web.xml---spring-mybatis.xml(Spring的配置文件)---servlet-mvc.xml(SpringMVC的配置文件),因爲root-context.xml配置文件中Controller會先進行掃描裝配,可是此時service尚未進行事務加強處理,獲得的將是原樣的Service(沒有通過事務增強處理,故而沒有事務處理能力),因此咱們必須在root-context.xml中不掃描Controllerspring
//spring-mybatis文件 <!-- 自動掃描組件,這裏要把controler下面的 controller去除,他們是在spring3-servlet.xml中配置的,若是不去除會影響事務管理的。 --> <context:component-scan base-package="com.sence"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> //spring-mvc.xml文件 <!-- 掃描全部的controller 可是不掃描service--> <context:component-scan base-package="com.sence"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>