15- spring编程式事务管理
15.1 常用API
PlatformTransactionManager
它是spring事务管理的接口,参考声明式事务中的介绍
TransactionDefinition
它是事务定义接口,参考声明式事务中的介绍
TransactionTemplate
#它是事务管理模版类,继承DefaultTransactionDefinition类。用于简化事务管理,事务管理由模板类定义。
1.通过调用模板类的execute()方法来自动实现事务管理
2.方法中需要传递【TransactionCallback】、或【TransactionCallbackWithoutResult】进行业务的回调处理
TransactionCallback
#通过实现该接口的“T doInTransaction(TransactionStatus status) ”方法来定义需要事务管理的操作代码
1.适合于【有返回值】的目标方法
TransactionCallbackWithoutResult
#实现TransactionCallback接口,提供“void doInTransactionWithoutResult(TransactionStatus status)”
1.适合于【不需要返回值】的目标方法
15.2 编程式事务管理模板
public void transfer(final String sourceName,final String destName, final Float money) {
// 定义事务回调接口
TransactionCallbackWithoutResult tcwr = new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
// 需要事务控制的业务代码
}
};
// 编程式事务控制(通过事务模版执行)
transactionTemplate.execute(tcwr);
}
15.3 项目目录
15.4 配置bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--配置包扫描dao/service-->
<context:component-scan base-package="cn.guardwhy"/>
<!--配置JdbcTemplate-->
<bean id=