Spring MVC +Spring +mybatis 整合事务处理
来源:互联网 发布:我的淘宝店铺怎么注销 编辑:程序博客网 时间:2024/05/20 04:29
因为spring的context是父子容器,所以会产生冲突,由ServletContextListener产生的是父容器,springMVC产生的是子容器,子容器Controller进行扫描装配时装配了@Service注解的实例,而该实例理应由父容器进行初始化以保证事务的增强处理,所以此时得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力。
主要配置文件如下
1、spring.xml
<!-- 自动扫描包 -->
<context:component-scan base-package="com.zhouyuan.*">
<context:exclude-filter type ="annotation" expression= "org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</bean>
<!-- 配置事务管理 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事务注解驱动,标注@Transactional的类和方法将具有事务性 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<property name="dataSource" ref="dataSource" />
</bean>
2、springmvc的配置文件
<!-- 配置扫描包 -->
<context:component-scan base-package="com.zhouyuan.*">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Service" />
</context:component-scan>
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />
<!-- 对静态资源文件的访问 -->
<mvc:default-servlet-handler />
3、在service层配置事务
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public boolean checkLogin(User user) throws Exception {
System.out.println("UserSfds");
int result = userDao.addUser(user);
if (result > 0) {
throw new Exception("插入错误");//插入成功,抛出异常,千万不要捕捉
}
return false;
}
这样配置就可以成功了,网上有很多资料中事务是没有回滚的。
- Spring MVC +Spring +mybatis 整合事务处理
- Spring MVC Mybatis 整合
- spring mvc mybatis 整合
- Spring MVC整合MyBatis
- spring mvc mybatis 整合
- spring mvc mybatis 整合
- Spring mvc+Mybatis整合
- Spring MVC整合Mybatis
- Spring+MVC+Mybatis整合
- 整合spring+spring mvc+mybatis
- Spring+Spring MVC+MyBatis整合
- spring spring-mvc mybatis 整合
- Spring + Spring MVC + MyBatis 整合
- Spring + Spring MVC + MyBatis 整合
- Spring mvc+Spring+Mybatis整合
- Spring mvc+Spring+Mybatis整合
- Spring+Spring MVC+MyBatis整合
- spring + spring mvc + mybatis 整合
- (转)微博可以改变一切吗?
- 软件测试管理基础重点知识点总结
- Android Studio 创建文件是 Create by administrator修改
- 如何高效利用GitHub
- 第四章 约束(constraints)
- Spring MVC +Spring +mybatis 整合事务处理
- Arduino程序基本结构
- 笔记:Oracle SQL 高级编程 第1章 SQL 核心
- Android系统中iptables的应用(二)BandwidthController
- leetcode | Reverse Integer
- 十六进制字符串(CString或char[]) 和 BYTE,char数组 相互转化
- 欢迎使用CSDN-markdown编辑器
- java POI导出数据库的表内容
- GDB十分钟教程