Spring的事务管理配置,
分享于 点击 8609 次 点评:72
Spring的事务管理配置,
Spring事务的核心对象
spring提供了三大接口来实现事务的控制
使用Spring核心对象,采用编程式实现事务控制
模拟转账业务,也是采用AOP的方法,为原始方法增强业务功能。
-
原始方法
/** * * @param outName 出账用户名 * @param inName 入账用户名 * @param money 转账金额 */ public void transfer(String outName, String inName, Double money) { //执行业务 accountDao.inMoney(outName, money); //模拟报错 int i = 1 / 0; accountDao.outMoney(inName, money); }
-
环绕通知
public class TxAdvice { //数据源 private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } /** * 环绕通知 */ public Object transactionManager(ProceedingJoinPoint pjp) throws Throwable { //创建事务 PlatformTransactionManager dt = new DataSourceTransactionManager(dataSource); //创建事务定义对象 TransactionDefinition td = new DefaultTransactionDefinition(); //获取事务状态 TransactionStatus ts = dt.getTransaction(td); //调用原始方法 Object result = pjp.proceed(pjp.getArgs()); //提交事务 dt.commit(ts); return result; } }
-
配置aop
<!--配置事务bean--> <bean id="txAdvice" class="com.itheima.aop.TxAdvice"> <property name="dataSource" ref="dataSource"/> </bean> <!--配置aop--> <aop:config> <!--配置切入点--> <aop:pointcut id="pt" expression="execution(* *.*.transfer(..))"/> <!--配置切面,整合切入点和通知--> <aop:aspect ref="txAdvice"> <!--环绕通知--> <aop:around method="transactionManager" pointcut-ref="pt"/> </aop:aspect> </aop:config>
声明式事务之XML配置
<tx:method>
标签的属性
<tx:method
name="*"
read-only="false"
timeout="-1"
isolation="DEFAULT"
no-rollback-for=""
rollback-for=""
propagation="REQUIRED"
/>
- name:待添加事务的方法名表达式(支持号通配符),例如get 、*
- read-only:设置事务的读写属性,true为只读,false为读写。
- timeout:设置事务的超时时长,单位秒
- isolation:设置事务的隔离级别,该隔离级设定是基于Spring的设定,非数据库端。
- no-rollback-for:设置事务中不回滚的异常,多个异常间使用逗号分割.
- rollback-for:设置事务中的回滚异常,多个异常使用逗号分隔
- propagation:设置事务的传播行为
声明式事务之注解配置
注解+XML
相关文章
- 暂无相关文章
用户点评