1. 程式人生 > >spring mvc 給Controller新增事務不成功的原因

spring mvc 給Controller新增事務不成功的原因

掃描配置如下:
spring-context.xml

<context:component-scan base-package="com.freecg.green007">     <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>

spring-mvc.xml

<context:component-scan base-package="com.freecg.green007"> 
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>

spring父容器不掃描@Controller,MVC子容器不掃描@Service.

事務配置如下:
spring-context.xml

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="false" />
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <property name="dataSource" ref="dataSource" /> </bean>
因為spring容器和spring-mvc是父子容器,spring容器會先載入,如果此時掃描了Controller,但未掃描到Service。
spring事務配置檔案還有上下文都是通過org.springframework.web.context.ContextLoaderListener載入的,而spring MVC的action是通過org.springframework.web.servlet.DispatcherServlet載入的 。
web是先啟動ContextLoaderListener後啟動DispatcherServlet 
在ContextLoaderListener載入的時候action並沒在容器中,所以現在使用AOP新增事務或者掃描註解都是無用的。

結論:讓spring掃描註冊Service實現類,讓MVC掃描註冊Controller,此時spring父容器已經註冊Service為Bean,此時事務可以得到正常配置。

相關推薦

spring mvc Controller新增事務成功原因

掃描配置如下:spring-context.xml <context:component-scan base-package="com.freecg.green007">     <context:exclude-filter type="annotat

Spring AOP 對Spring MVCController切面攔截起作用

1 問題描述 當使用Spring AOP對Controller層的Controller類的方法進行切面攔截,不起作用。AOP配置沒有任何問題。 2 排查過程 Spring AOP配置沒有任何問題;【正常】 斷點除錯:Spring原始碼斷點除錯,在呼叫Controller方法時,Controller的例項被JD

Spring MVCController如何將資料返回頁面

要實現Controller返回資料給頁面,Spring MVC 提供了以下幾種途徑: ModelAndView:將檢視和資料封裝成ModelAndView物件,作為方法的返回值,資料最終會存到HttpServletRequest物件中! Model物件:通過給方法新增引用

如何Spring MVC的action加上事務

其實就是一個載入順序的問題 首先使用了spring MVC的專案是不需要配置action bean,而是通過spring mvc的配置檔案進行掃描註解載入的,spring事務配置檔案還有上下文都是通過org.springframework.web.context.Con

Spring MVCController向頁面傳值的方式

用戶 () 傳參數 control let att model enter 設定 Spring MVC 從 Controller向頁面傳值的方式 在實際開發中,Controller取得數據(可以在Controller中處理,當然也可以來源於業務邏輯層),傳給頁面,常用的方

spring MVC框架controller間跳轉失效問題

info control 代碼 img nbsp ont response 返回 生效 今天調試時,發現redirect:url 不生效,訪問直接返回這串字符串。忘了找了兩個來小時,才找到正確的原因。 原來是因為我代碼開始用的是@RestController, 用了這個後,

Spring MVC @Transactional註解方式事務失效的解決辦法

                前文提到,最新換了框架,新專案用SpringMVC + Spring JdbcTemplate。搭框架時,發現了一個事務無法正常回滾的問題,記錄如下:首先展示問題:Spring applicationContext.xml配置:<beanid="dataSource"cl

【OpenCV3】如何影象新增)透明度通道

透明度通道,又叫alpha通道,做用於記錄影象的透明度資訊。具體參照【百度百科】“alpha通道”中的介紹。透明度確切的說應該叫不透明度(Opacity),取最小值0時,表示完全透明;取最大值255時,表示完全不透明;取值越大表示越不透明。通常遇到的影象如bmp影象、jpg影

Spring Boot maven profile 替換成功原因

配置logback.xml替換的時候,發現替換不成功 <property name="LOG_FILE_HOME" value="${log.root.path}" /> 期望

spring mvccontroller怎麼接收頁面表單提交的資料

轉自:http://blog.csdn.net/wujiaqi168/article/details/41957187 1、定義一個類,該類的欄位要包含表單中所有input的name對應的值,並且在類中為對應的欄位生成getter 與setter方法 2、在對應的c

Spring MVC中 ModelAndView返回頁面正確

問題和解決 UserController.java檔案 @Controller @RequestMapping("user") public class UserController { @RequestMapping("/test3") public Model

spring mvccontroller識別同一個form表單的多個submit按鈕問題以及相關處理

          之前只寫過spring mvc的controller處理form表單中一個submit的程式碼,今天遇到了form表單中存在多個submit,然後自己百度了一下,找到了解決方案,不過又出現了其他錯誤,現在來總結一下。 sp

spring mvccontroller使用介紹

SpringMVC是一個基於DispatcherServlet的MVC框架,每一個請求最先訪問的都是DispatcherServlet,DispatcherServlet負責轉發每一個Request請求給相應的Handler,Handler處理以後再返回相應的檢視(View

spring mvc請求controller訪問方式

1.一個Controller裡含有不同的請求url @Controller //類似Struts的Action public class TestController { @RequestMapping("test/login.do") // 請求url地址對

spring MVCcontroller層和service層的junit4測試

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResul

spring mvc使用@Controller返回的html檢視

First the DispatcherServlet is invoked by the Servlet Container. The DispatcherServlet finds a mapping which maps to the home method of

Spring MVCController如何進行重定向

Spring MVC中進行重定向,本人知道的有兩種方式: 方法返回的URI(相對路徑)中加上"redirect:"字首,宣告要重定向到該地址 使用HttpServletResponse物件進行重定向

記錄一下JFinal 在controller 新增事務處理

在controller新增事務; @Before(value = { ErrorInterceptor.class, Tx.class }) 前面是攔截器處理自定義拋異常 攔截器把錯誤資訊顯示到頁面 這種事務的寫法 如果程式碼加了try 事務是不起作用的 必須手動拋

Spring+Spring MVC+Mybatis整合配置AOP生效的解決方案以及Bean初始化重複載入兩次(疑難雜症)

之前上班做spring+spring mvc +hibernate開發, 2年之久不做想複習一下aop的使用,結果配置遇見aop不生效,解決而記錄! 先上程式碼直接看反例效果會明顯: 首先看一下我的程式碼的包路徑: 接下來看Spring-MVC的配置檔案部分程式碼:

Spring MVC 3.x 和 JDK8相容

查了好幾天,竟然是因為Spring MVC3.x和JDK 8不相容!! 又一次被自己的強迫症坑了。 異常資訊如下 四月 19, 2016 10:02:09 下午 org.apache.catalina.core.AprLifecycleListener init 資訊: