[转]终于找到全annotation配置springMVC的方法了(事务不失效)

原文:http://icanfly.iteye.com/blog/778401

icanfly 写道 
如果带上事务,那么用annotation方式的事务注解和bean配置,事务会失效,要将service bean配置到xml文件中才行

这个问题是由于问答上有解决方案 
引用

这个问题很经典了 
在主容器中(applicationContext.xml),将Controller的注解排除掉

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

而在springMVC配置文件中将Service注解给去掉

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

因为spring的context是父子容器,所以会产生冲突,由ServletContextListener产生的是父容器,springMVC产生的是子容器,子容器Controller进行扫描装配时装配了@Service注解的实例,而该实例理应由父容器进行初始化以保证事务的增强处理,所以此时得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力。 

还有一种方式是将service层改用xml配置,其实这样做也是变相的让springmvc无法扫描service,而只能依赖父窗口也就是ServletContextListener来进行初始化,这样同样被赋予了事务性。

时间: 2024-08-29 15:32:19

[转]终于找到全annotation配置springMVC的方法了(事务不失效)的相关文章

annotation配置springMVC的方法了事务不起作用

Spring MVC 和spring context 父子容器关系http://www.121ask.com/thread-5471-1.html 父上下文容器中保存数据源.服务层.DAO层.事务的Bean. 子上下文容器中保存Mvc相关的Action的Bean. 事务控制在服务层. 由于父上下文容器不能访问子上下文容器中内容,事务的Bean在父上下文容器中,无法访问子上下文容器中内容,就无法对子上下文容器中Action进行AOP(事务). 当然,做为“传统型”方案,也没有必要这要做. 这个问题

SpringMvc的xml配置与annotation配置的例子的区别

1.导入jar包时,要在xml配置基础上加 spring-aop-4.2.2.RELEASE.jar (注解的时候需要) 2.编写controller的时候要annotation需要做相关配置即红色部分,而xml就是要实现controller的接口 (a)annotation配置时 package com.spring.hello; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServle

ssm框架整合入门系列——配置SpringMVC dispatcherServlet-servlet.xml

配置SpringMVC dispatcherServlet-servlet.xml 在ssm-crud项目中 SpringMVC的配置主要是在dispatcherServlet-servlet.xml文件 在这之前,先修改beans的头信息,否则按alt+/ 快捷键没有提示,并且添加context:component-scan还报错:context:component-scan is not bound,后来找到的解决方法:context:component-scan is not bound.

史上最全最强SpringMVC详细示例实战教程

一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!--configure the setting of springmvcDispatcherServlet and configure the mapping--> <servlet>     <servlet-name>

转:史上最全最强SpringMVC详细示例实战教程

一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 <!--configure the setting of springmvcDispatcherServlet and configure the mapping--> 2 <servlet> 3 <servlet-name>springmvc</servlet-name> 4

基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录

原文 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录 首先说说 IDEA 12,由于myeclipse越来越卡,我改用idea12 了,发现其功能强悍到eclipse无法比拟,此款ide理解上下文是一等一的,不用什么jquery插件,extjs插件,都可以实现全智能的代码提示.速度什么的都比myeclipse快.而且IDEA提供了android支持struts spring hibernate 支持.下面,我讲教大家完成一个基于全注解的Spirn

第一节(配置springmvc环境)学习尚硅谷-springmvc视频教程

之前,一直从事C#开发.后来,公司调整后领导决定使用java开发,因此需要收集相关学习资料.该视频教程比较入门,也适合自己,于是边看边写的同时再总结一下便于自己牢记,遇到分歧不对之处望指正. 开发环境:win8系统.IntelliJ IDEA 2016.1.3. 1.创建maven项目目的是便于jar包更新.维护,IntelliJ非常方便.智能,会自动创建好项目结构,便于团队开发.创建好项目后,需要导入springmvc相关开发jar文件,通过maven管理jar包文件,只需在pom.xml文件

myeclipse配置springmvc+hibernate+mysql+tomcat 基于maven

环境: 1.myeclipse 2014 下载+破解..  http://my-eclipse.cn/ 2.hibernate 4.2.5.Final 3.mysql 好像是最新的 4.tomcat v8 5.maven 是myeclipse内置的.. new 一个webapp的maven的项目 先添加依赖项到pom.xml <properties> <springframework>4.0.5.RELEASE</springframework> <servlet

配置SpringMVC

这一篇我们进行简单的基础的SpringMVC框架的搭建与初步认识,我以一名初学者的身份,一点一点进行Spring框架的搭建. 我介绍下我所使用的编程环境,个人见解,不喜勿喷,仅做参考. 首先,请确定您对jsp或其他网页页面有一点了解,对jstl有一点点了解,理解servlet中的request.response的含义和使用,做过jsp与servlet的直接对接小demo. 我在电脑上已经装好了eclipse-jee-kepler,我用的是eclipse,自己安装好了JDK7,我认为MyEclip