spring+springMVC,声明式事务失效,原因以及解决办法
来源:互联网 发布:挖矿赚钱软件 编辑:程序博客网 时间:2024/06/11 15:45
一.声明式事务配置:
<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 事务失效的解决办法
- 安卓之乱码
- ios小项目之密码生成器-------生成密码部分
- Android开发之程序员必须要懂得Android的重要设计理念
- hostapd_cli 命令介绍
- 总结eclipse常用快捷键和使用技巧
- spring+springMVC,声明式事务失效,原因以及解决办法
- 理解A*寻路算法具体过程
- matlab中文件操作
- wikioi2969 角谷猜想 记忆化搜索
- 设计模式第三站--装饰模式
- Eclipse安装Maven后JRE警告
- poj 3411 Paid Roads
- wpa_cli 命令介绍
- 2013长沙赛区第一题 HDU4565—So Easy!