项目开发过程中遇到spring注解事务不生效的情况,项目使用的是spring mvc、spring、mybatis 。bean都是用spring的注解管理的,事务也是用的注解式。经过几番折腾发现问题,特此记录解决方法如下:
一、在applicationContext.xml文件中扫描bean时排除Controller。
<context:component-scan base-package="com.newmode.fcm"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> <context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
二、在springMvc.xml文件中扫描Controller时排除Service。
<context:component-scan base-package="com.newmode.fcm.web"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> </context:component-scan>
三、在要事务控制的方法上加上@Transactional注解。
运行,nice,完美控制,原因如下:
因为spring是由org.springframework.web.context.ContextLoaderListener加载,spring mvc是由org.springframework.web.servlet.DispatcherServlet加载,互不干扰,如果spring mvc中不排除@Service他就会一并把@Service扫描装配进来,而该@Service理应由父容器进行初始化以保证事务的一致性,故这里要进行如上处理。
相关推荐
Spring的`<tx:annotation-driven>`标签启用注解驱动的事务管理,使`@Transactional`生效。Struts2的配置文件需要指定Action类及其结果映射,而Mybatis3的配置则包括数据源、SqlSessionFactory和Mapper扫描。 在业务...
在使用 Spring MVC 之前,需要引入相应的 jar 包,包括 Spring 2.5.6 和 Hibernate 3.2.0。Spring 2.5.6 需要引入的 jar 包有 spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-nodep-2.1_3.jar 等。...
在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志、事务管理、权限控制等。当我们想通过注解方式拦截Controller层的方法时,可能会遇到一些问题。本文将详细介绍如何使用...
Spring-MVC通过DispatcherServlet进行中央调度,使用ModelAndView对象封装模型数据和视图信息,实现了松耦合的MVC设计模式。 四、Maven Maven是Apache基金会开发的项目管理工具,它通过项目对象模型(POM)文件来...
总的来说,`spring-webmvc-struts.jar`和`aspectjweaver.jar`的结合使用,能够帮助开发者构建高效、模块化且易于维护的Java Web应用,同时利用Spring的强大功能和AspectJ的灵活性。在开发过程中,理解这两个库的工作...
不过,随着Spring MVC的发展,这种方式已经被注解驱动的Controller所取代,但理解这种旧的控制器模式对于了解Spring MVC的历史和演变是有帮助的。 5. **handler-mappings.xml** 这是Spring的配置文件,可能包含了...
该注解通常配合`<context:component-scan>`使用,以便Spring能够自动检测和实例化标记了此注解的类。 - **@Repository**: 主要用于数据访问层(DAO层)的类,它可以提供额外的功能,如异常转换等。 - **@Service**: ...
总的来说,"Spring+mvc+mybatis Mapper xml自动加载"是一项旨在提升开发效率的技术实践,通过合理的配置和扩展,可以在不重启服务器的情况下实时应用Mapper XML文件的更改,从而加快迭代速度,提高开发团队的工作...
例如,使用`<mvc:annotation-driven>`元素可以启用注解驱动的开发,使得@Controller、@RequestMapping等注解生效。 接下来,详细讲解Spring MVC的核心组件: 1. **Controller**:通过@Controller注解标识的类,...
在Spring MVC框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,比如日志、事务管理、安全检查等,从核心业务逻辑中解耦出来。下面是一个简单的Spring MVC中AOP的例子,分为配置和实现两...
在这个例子中,配置文件是 `/WEB-INF/spring-mvc/*.xml`,这意味着所有在 `spring-mvc` 目录下的 XML 文件都将被加载。 2. **contextConfigLocation**:这个初始化参数指定了 Spring MVC 的配置文件位置。默认情况...
Profile允许根据不同的环境(如开发、测试、生产)来选择启用哪些配置,使用`@Profile`注解可以指定Bean在哪个环境下生效。 19. **Spring如何实现RESTful服务?** 可以通过使用@RestController注解的控制器类,...
但是,为了使这些注解生效,必须在 DispatcherServlet 的配置中包含对应的 `HandlerMapping` 和 `HandlerAdapter`。 DispatcherServlet 默认支持 `DefaultAnnotationHandlerMapping` 和 `...
MyBatis与Spring结合使用时,可以实现声明式事务管理,提供更强大的数据访问能力。在项目中,MyBatis的配置文件通常会定义数据源、SqlSessionFactory以及具体的Mapper接口和XML配置文件,这些文件可能在`src`目录下...
可以使用XML配置或注解方式,Spring MVC中通常推荐使用注解方式。`basename`属性指定了locale目录下以`messages`开头的文件名。 在Controller中,我们需要添加处理Locale的请求响应方法。通过检测`Accept-Language`...
在文件"spring_06_transaction"中,我们可能看到关于Spring的声明式事务管理的详细解释,包括如何使用@Transactional注解,以及如何在XML配置文件中定义事务切面。这些内容将帮助我们理解如何在不修改业务代码的情况...
Spring MVC 是一个基于Java的轻量级Web...要使注解生效,必须有正确的`HandlerMapping`和`HandlerAdapter`配置。通过自定义这些组件,可以实现更复杂的路由策略、添加拦截器以增强功能,并根据项目需求调整处理流程。
首先,要使注解生效,我们需要在Spring配置中注册注解处理器。有三种方式来实现: 1. **显式注册**: 在XML配置中添加`<bean>`标签,如`<bean class="org.springframework.beans.factory.annotation....
编程式事务管理需要手动编写事务管理代码,而声明式事务管理使用注解或 XML 配置来管理事务。 Spring+SpringMVC 配置事务管理无效原因 在使用 Spring 和 SpringMVC 配置事务管理时,可能会遇到事务管理无效的问题...