spring mvc 小记(七):关于spring事务管理
来源:互联网 发布:安卓端口映射软件 编辑:程序博客网 时间:2024/06/05 07:42
使用spring mvc已有2年之久,却还是停留在使用阶段,感觉这么下去不是办法,所以还是想往深处一探究竟。
spring事务管理
事务,简单的说,就是对于一个操作来说,要么都成功,要么都失败,这样可以保证数据的一致性,在spring mvc中也可以配置相应的事务管理器,有两种实现方法:XML和注解。
XML配置方式实现事务
在spring配置文件中,初始化一个事务管理器,同时将数据源注入:
<span style="font-size:18px;"><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="druidDataSource" /></bean></span>定义事务的基本属性:
<span style="font-size:18px;"><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="find*" read-only="true" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="save*" propagation="REQUIRED" /></tx:attributes></tx:advice></span>transaction-manager为上面定义的事务管理器
name属性定义在哪些方法上调用;
propagation定义了该事务的传播属性,默认值为REQUIRED,作用是“支持当前事务,如果当前没有事务,就新建一个事务,即只有一个事务,出现异常时该事务内的所有操作都会回滚”,其他6个值可在api上查到,一般选择默认值;
read-only作用是“只接受只读操作”,默认值为false,若配置为true,当配置的方法中出现对数据库的增删改时,会报异常如:Caused by: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed,适当的配置该属性可提高性能。
最后配置该事务的切面,事务配置完成:
<span style="font-size:18px;"><aop:config><!-- 定义一个切入点 --><aop:pointcut id="interceptorPointCuts" expression="execution(* com.jk.service.impl.*Impl.*(..)) or execution(* com.jk.dao.*.*(..))" /><!-- 对切入点和事务的通知,进行适配 --><aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts" /></aop:config></span>
注解方式实现事务
同样的,在spring配置文件中,初始化一个事务管理器,同时将数据源注入:
<span style="font-size:18px;"><span style="font-size:18px;"><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="druidDataSource" /></bean></span></span>然后开启注解:
<tx:annotation-driven transaction-manager="transactionManager"/>
这样就可以在代码中使用事务的注解了,在需要事务的方法上加上,其中各属性与xml配置中的相同:@Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
0 0
- spring mvc 小记(七):关于spring事务管理
- spring mvc事务管理
- spring mvc 小记(三):关于AOP
- spring mvc 小记(六):关于MySql优化
- Spring详解(七)------事务管理
- 关于spring 的事务管理
- 关于:No transactional EntityManager available--spring MVC 的事务管理
- spring mvc:业务层事务管理
- spring mvc + hibernate 事务管理 + mysql
- spring mvc整合mybatis事务管理
- spring mvc 小记(二):关于log4j的配置
- 关于spring mvc + mybatis + spring aop声明式事务管理没有作用的问题
- 关于spring hibernate的事务管理
- 关于spring事务管理不起效果
- Spring Framework 开发参考手册 之七 事务管理
- spring mvc+hibernate 实现事务管理(配置文件版)
- spring mvc+hibernate 实现事务管理(配置文件版)
- Spring事务管理
- MSP430 - G2553之串口操作
- lightoj1006【记忆化搜索(我是这么叫)】
- 03-树3 Tree Traversals Again (25分)
- HTTP响应头信息和请求头信息详解
- openwrt设置5G功率
- spring mvc 小记(七):关于spring事务管理
- 堆排序
- C++中如何求出程序的运行时间
- GitHub使用
- linuxc不带缓存的文件操作
- 纵向滚动通知
- oracle连接
- 【87.65%】【codeforces 731A】Night at the Museum
- Linux命令之"telnet"