spring+springMVC,声明式事务失效,原因以及解决办法
来源:互联网 发布:免费顶级域名注册 编辑:程序博客网 时间:2024/06/06 02:52
一.声明式事务配置:
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource" />
- </bean>
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="add*" propagation="REQUIRED" read-only="false"/>
- <tx:method name="del*" propagation="REQUIRED" read-only="false"/>
- <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
- <tx:method name="mod*" propagation="REQUIRED" read-only="false" />
- </tx:attributes>
- </tx:advice>
- <aop:config>
- <aop:pointcut id="serviceMethods" expression="execution(public * com.lexing.platform.service.*.*(..))" />
- <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
- </aop:config>
二.声明式事务失效,原因
根本原因:由子容器扫描装配了@Service 注解的实例。
spring的context是父子容器,由ServletContextListener 加载spring配置文件产生的是父容器,springMVC加载配置文件产生的是子容器,子容器对Controller进行扫描装配时装配了@Service注解的实例 (@Controller 实例依赖@Service实例),而该实例理应由父容器进行初始化以保证事务的增强处理,所以此时得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力。
三.解决办法
1.spring配置文件applicationContext中:
- <!-- 不扫描带有@Controller注解的类 ,让 springMVC 子容器加载。
- <context:component-scan base-package="com.lexing.platform">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
- <!-- 将 带有 @Service注解的类,交由spring 父容器实例化,[ @Service实例依赖@Repository实例,故spring父容器也会装配@Repository 实例]
- <context:component-scan base-package="com.lexing.platform">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
- </context:component-scan>
0 0
- spring+springMVC,声明式事务失效,原因以及解决办法
- spring+springMVC,声明式事务失效,原因以及解决办法
- spring+springMVC,声明式事务失效,原因以及解决办法
- spring+springMVC,声明式事务失效,原因以及解决办法
- spring+springMVC,声明式事务失效,原因以及解决办法
- 【重要】spring+springMVC,JdbcTemplate声明式事务失效,原因以及解决办法
- spring+springmvc声明式事务失效
- spring + springMVC声明式事务失效问题
- 使用spring+springMVC 组合开发,声明式事务失效
- spring 声明式事务失效问题
- Spring3.x事务失效的原因以及解决办法
- spring声明事务失效问题
- SpringMVC 声明式事务学习以及问题解决
- Spring事务失效的原因
- Spring事务失效的原因
- spring 事务失效的原因
- Spring事务失效的原因
- Spring 事务失效的解决办法
- 非常强大的射击动作游戏源码完整版
- .NET用NCO连接SAP 从RFC查询数据 代码配置连接SAP的信息
- gdb 使用笔记
- Stl各容器对比
- BP Neural Networks初步理解
- spring+springMVC,声明式事务失效,原因以及解决办法
- Ioc-Unity整理
- [LeetCode OJ]ZigZag Conversion && Valid Sudoku && String to Integer (atoi)
- [BZOJ 1043][HAOI 2008]下落的圆盘(计算几何)
- ubuntu下ftp常识用法
- 示例解读Java的跨平台原理
- Apache_Maven基本配置和使用
- Swift语法基础:9 - Swift的字面量, 类型转换, 类型别名
- Java的数据库事务处理