`

@Transactional声明的事务不起作用

 
阅读更多

在使用spring mvc时,我使用了@Service这样的注解, 发现使用注解@Transactional声明的事务不起作用
.
分类: j2ee2014-02-08 17:331071人阅读评论(0)收藏举报


问题出现的场景:

在使用spring mvc时,我使用了@Service这样的注解, 发现使用注解@Transactional声明的事务不起作用。

我的配置如下:

<mvc:annotation-driven />

<context:component-scan base-package="org.test"/ >

<bean id="txManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
         <property name="dataSource" ref="dataSource" />
     </bean>

    <tx:annotation-driven transaction-manager="txManager" />


原因是:

component-scan和事务所在的上下文不一样,component-scan所在的配置是由servlet加载的,事务所在的配置文件是由Listener加载的。


我的解决方法:

按照下面的配置,在应用启动时,不让spring扫描到@Service注解的类,servlet的配置文件中这样写:

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





listener的上下文中增加:

<context:component-scan base-package="org.test" ></context:component-scan>
分享到:
评论

相关推荐

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务管理的基本概念。事务是一组数据库操作,这些操作要么全部执行,要么全部回滚,...

    Spring3事务管理——使用@Transactional 注解.rar

    Spring3引入了基于注解的事务管理,极大地简化了事务配置,使得开发者可以在方法级别声明事务边界,这就是`@Transactional`注解的用处。本文将深入探讨这个注解以及如何在Spring3中有效地使用它。 `@Transactional`...

    后端 Java Spring Data Jpa @Transactional 介绍

    这个注解是Spring框架中的核心部分,它允许开发者声明性地控制事务边界,从而确保数据的一致性和完整性。 **一、什么是事务(Transaction)** 事务是一组逻辑操作,这些操作被视为一个单一的工作单元。如果事务中...

    什么情况会导致@Transactional事务失效?

    在Java编程中,`@Transactional`注解是Spring框架提供的一种事务管理机制,它使得开发者能够在方法级别方便地声明事务边界。然而,在某些特定情况下,`@Transactional`可能会失效,导致事务无法正常工作。以下是一些...

    springboot中事务管理@Transactional的注意事项与使用场景

    4. 锁的作用范围:当方法加上 synchronized 时,由于锁的作用范围比事务的作用范围小,因此应该修改锁的作用范围,保证锁的范围比事务的范围大。 使用 @Transactional 的使用场景 1. 不使用 try-catch 显式处理...

    Spring中@Transactional事务回滚(含实例

    需要注意的是,`@Transactional`注解只能对Spring管理的bean起作用,对于非Spring管理的对象(如静态方法或第三方库的代码),`@Transactional`将无法控制事务。 六、异常处理与事务回滚 理解异常处理与事务回滚的...

    Spring声明式事务@Transactional知识点分享

    "Spring声明式事务@Transactional知识点分享" 在 Spring 框架中,@Transactional 注解是实现声明式事务的关键。通过 @Transactional 注解,可以指定事务的传播行为、隔离级别、读写控制等属性。 首先,@...

    Spring @Transactional工作原理详解

    在Spring框架中,`@Transactional`注解是一个强大的工具,用于声明式地管理事务。它使得开发者无需显式地在代码中控制事务的开始、提交和回滚,从而提高了代码的可读性和可维护性。下面我们将深入探讨`@...

    Spring @Transactional注解失效解决方案

    2. NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法在一个事务中被调用,该事务会被挂起,调用结束后,原先的事务会恢复执行。 3. REQUIRESNEW:不管是否存在事务...

    注解实现声明式事务管理

    总之,Spring的注解式声明事务管理极大地简化了事务的管理,使得开发者可以专注于业务逻辑,而无需关心事务的细节。通过合理的配置和使用`@Transactional`注解,我们可以确保数据的一致性和完整性,从而构建出健壮的...

    Spring中的@Transactional事物回滚实例源码

    在Spring框架中,`@Transactional`注解是事务管理的核心组件,它允许开发者在方法级别声明事务边界。本文将深入探讨这个注解的工作原理、如何配置以及如何在遇到异常时触发事务回滚。 首先,`@Transactional`是...

    spring @Transactional 无效的解决方案

    解决方案非常简单,只需要在方法 A 上也声明事务注解即可。当我们在方法 A 上添加 @Transactional 注解时,事务将正常生效,方法 A 和方法 B 将自动参与到同一个事务中。 结论 ---------- 在这篇文章中,我们介绍...

    spring的@Transactional注解详细用法1

    通过引入`tx`和`aop`命名空间,可以声明事务管理器并定义事务属性,如传播行为、隔离级别、读写模式等。`@Transactional`注解允许指定这些属性,如`propagation`(传播行为)、`isolation`(隔离级别)、`readOnly`...

    带有@Transactional和@Async的循环依赖问题

    在Spring框架中,`@Transactional` 和 `@Async` 是两个非常重要的注解,它们分别用于声明事务管理和异步执行。然而,当这两个注解同时出现在一个方法上时,可能会引发一些复杂的问题,特别是在存在循环依赖的情况下...

    深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题

    在 Spring Boot 应用程序中,我们可以使用 @Transactional 注解来声明事务。例如,在 StudentDao 类中,我们使用 @Transactional 注解来声明事务: ```java @Component @Transactional public class StudentDao { ...

    Transactional:Spring事务性Junit测试

    声明式事务管理通过在方法上添加@Transactional注解来实现,这使得开发者无需编写事务管理代码就能控制事务。编程式事务管理则需要通过TransactionTemplate或者PlatformTransactionManager接口手动管理事务的开始、...

    spring的@Transactional注解用法解读

    Spring框架提供了一种统一的方式来处理事务管理,包括对不同事务API(如JTA、JDBC、Hibernate、JPA和JDO)的支持,并提供了声明式和编程式的事务管理方式。 1. **声明式事务管理** 声明式事务管理是Spring提供的...

    Spring Data JPA系列4——Spring声明式事务处理与多数据源支持.doc

    Spring 框架提供了声明式事务处理机制,通过使用@Transactional 注解来标注需要事务处理的方法。这样,业务代码中不需要再关心事务的处理,Spring 框架将自动处理事务的提交和回滚。 三、@Transactional 注解 @...

    Spring声明式事务和@Aspect的拦截顺序问题的解决

    Spring 声明式事务和 @Aspect 的拦截顺序问题的解决 Spring 框架中,声明式事务和 @Aspect 都可以用于实现Aspect-Oriented Programming(面向方面编程),但是它们的拦截顺序问题往往会导致很多问题。本文将详细...

Global site tag (gtag.js) - Google Analytics