`

@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使用

    本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器

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

    在本篇文章里小编给大家整理了关于Spring声明式事务@Transactional详解内容,需要的朋友们可以参考下。

    spring的@Transactional注解详细用法1

    声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,

    基于java的企业级应用开发:声明式事务管理.ppt

    &lt;tx:annotation-driven transaction-manager="transactionManager"/&gt; 如果将注解添加在Bean类上,则表示事务的设置对整个Bean类的所有方法都起作用;如果将注解添加在Bean类中的某个方法上,则表示事务的设置只对该...

    基于框架的Web开发-基于注解的事务配置.doc

    在applicationContext-tx.xml文件上加上tx:annotation-driven元素,保留事务管理器的bean声明。tx:advice和aop config的配置全部注释掉。 其余和切面、通知有关的配置都注释掉,或者删掉这个属性值引用前面定义的...

    注解实现声明式事务管理

    注解实现声明式事务管理

    深入理解Spring声明式事务:源码分析与应用实践

    Spring通过@Transactional注解以及底层的AOP和代理机制实现了声明式事务。这个机制允许开发者通过简单的注解就能控制事务的边界和规则,极大地简化了编程模型。在Spring中,事务管理是通过一系列的拦截器和事务管理...

    06丨20%的业务代码的Spring声明式事务,可能都没处理正确

    等事务 API,实现了一致的编程模型,而 Spring 的声明式事务功能更是提供了极其方便的事务配置方式,配合 Spring Boot 的自动配置,大多数 Spring Boot 项目只需要在方法上标记 @Transactional 注解,即可一键开启...

    Spring+Hibernate事务管理

    * 声明式事务管理: * 基于TransactionProxyFactoryBean的方式.(很少使用) * 需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强. * 基于AspectJ的XML方式.(经常使用) * 一旦配置好之后,...

    spring注解事务实现demo

    声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。spring注解事务实现demo

    springboot2+两种方式:(读写分离、动态DataSource、事务懒处理)+sharding-jdbc.zip

    (4)、懒事务处理方式,service层使用@Transactional注解的方法或者类只能走默认库(写库) (5)、AOP根据Dao层的方法名来判断读写库的切换,超出判断规则的只能走默认库(写库) 2、sharding-jdbc (1)、实现...

    transDemo.zip

    spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解),源码包,包含数据库表文件

    Spring 3.x的事务处理机制的研究比较

    Spring提供了多样化的事务编程支持,包括编程式事务和声明式事务。针对JDBC的事务处理对各类...当事务处理量少时,可以考虑用基于JDBC模板的编程式事务,当事务涉及量大时建议用基于@Transactional注解的声明式事务。

    lagou-transfer:Spring框架大作业

    大作业:自定义@Service、@Autowired、@Transactional注解类,完成基于注解的IOC容器(Bean对象创建及依赖注入维护)和声明式事务控制,写到转账工程中,并且可以实现转账成功和转账异常时事务回滚 编程题: 自定义...

    spring-transaction

    声明式事务管理 基于TransactionProxyFactoryBean的方式.(很少使用) 需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强. 基于AspectJ的XML方式.(经常使用) 一旦配置好之后,类上不需要添加...

    MyEclipse 6 Java 开发中文教程第十章

    234 &lt;br&gt;10.5.2.5 用Spring 2.0 的@Transactional标注解决事务提交问题(最佳方案) 238 &lt;br&gt;10.5.2.6 使用 HibernateTemplate 实现分页查询... 241 &lt;br&gt;10.6 小结... 242 &lt;br&gt;10.7 参考资料... 242...

    Spring中文帮助文档

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. IBM WebSphere 9.8.2. BEA WebLogic 9.8.3. Oracle OC4J 9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误...

    Spring API

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. IBM WebSphere 9.8.2. BEA WebLogic 9.8.3. Oracle OC4J 9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误...

    spring chm文档

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的...

Global site tag (gtag.js) - Google Analytics