在使用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>
分享到:
相关推荐
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
在本篇文章里小编给大家整理了关于Spring声明式事务@Transactional详解内容,需要的朋友们可以参考下。
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,
<tx:annotation-driven transaction-manager="transactionManager"/> 如果将注解添加在Bean类上,则表示事务的设置对整个Bean类的所有方法都起作用;如果将注解添加在Bean类中的某个方法上,则表示事务的设置只对该...
在applicationContext-tx.xml文件上加上tx:annotation-driven元素,保留事务管理器的bean声明。tx:advice和aop config的配置全部注释掉。 其余和切面、通知有关的配置都注释掉,或者删掉这个属性值引用前面定义的...
注解实现声明式事务管理
Spring通过@Transactional注解以及底层的AOP和代理机制实现了声明式事务。这个机制允许开发者通过简单的注解就能控制事务的边界和规则,极大地简化了编程模型。在Spring中,事务管理是通过一系列的拦截器和事务管理...
等事务 API,实现了一致的编程模型,而 Spring 的声明式事务功能更是提供了极其方便的事务配置方式,配合 Spring Boot 的自动配置,大多数 Spring Boot 项目只需要在方法上标记 @Transactional 注解,即可一键开启...
* 声明式事务管理: * 基于TransactionProxyFactoryBean的方式.(很少使用) * 需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强. * 基于AspectJ的XML方式.(经常使用) * 一旦配置好之后,...
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。spring注解事务实现demo
(4)、懒事务处理方式,service层使用@Transactional注解的方法或者类只能走默认库(写库) (5)、AOP根据Dao层的方法名来判断读写库的切换,超出判断规则的只能走默认库(写库) 2、sharding-jdbc (1)、实现...
spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解),源码包,包含数据库表文件
Spring提供了多样化的事务编程支持,包括编程式事务和声明式事务。针对JDBC的事务处理对各类...当事务处理量少时,可以考虑用基于JDBC模板的编程式事务,当事务涉及量大时建议用基于@Transactional注解的声明式事务。
大作业:自定义@Service、@Autowired、@Transactional注解类,完成基于注解的IOC容器(Bean对象创建及依赖注入维护)和声明式事务控制,写到转账工程中,并且可以实现转账成功和转账异常时事务回滚 编程题: 自定义...
声明式事务管理 基于TransactionProxyFactoryBean的方式.(很少使用) 需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强. 基于AspectJ的XML方式.(经常使用) 一旦配置好之后,类上不需要添加...
234 <br>10.5.2.5 用Spring 2.0 的@Transactional标注解决事务提交问题(最佳方案) 238 <br>10.5.2.6 使用 HibernateTemplate 实现分页查询... 241 <br>10.6 小结... 242 <br>10.7 参考资料... 242...
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 使用了错误...
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 使用了错误...
9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多...
9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的...