解決方法:
1、查所有關於事物的配置都沒有問題;
2、查找日誌,發現配置@postConstruct註解的方法在服務啓動過程中執行了兩次;
3、爲什麼出現兩次,百度後知道在springmvc的註解掃描配置中要用<context:exclude-filter>來過濾排除掉@service,如果不排除就會初始化兩次servicebean,導致事物失效。如果說spring 容器 初始化的時候service註解配置的事物能正常使用,那麼springmvc的掃描service初始化事物也應該成功,爲什麼失敗呢?原因是事物管理器的配置是以xml的配置方式配在applicationContext中的,而在springmvc的配置中並沒有配置,所以導致事物兩次初始化servicebean後不起作用。
<context:component-scan base-package="com.taotaosou" > <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>