1.声明式事务的简单介绍:
1.1、编程式事务:
TranscationFilter{
try{
//获取连接
//设置非自动提交
chain.doFilter();
//提交
}catch(Exception e){
//回滚
}finally{
//关闭连接,释放资源
}
}
1.2、声明式事务:
- 以前通过复杂的编程来编写一个事务,替换为只需要告诉Spring哪个方法是事务方法即可。Spring自动进行事务控制。
- 主要原理还是AOP环绕通知的原理。只需要一个注解。
- 事务管理代码的固定模式作为一种横切关注点,可以通过AOP方法模块化,进而借助Spring AOP框架实现声明式事务管理。但是自己写切面还是很麻烦的。这个切面已经有了,在Spring中称为事务切面、事务管理器。PlatFormTransactionManager,平台事务管理器,是一个接口。这个事务管理器就可以在目标方法运行前后进行事务控制(事务切面)。
1.3、快速的为某个方法添加事务:(以DataSourceTransactionManager为例):
1)、配置出这个事务管理器让其进行事务控制:
- 注意:头名称空间的配置:
xmlns:tx="http://www.springframework.org/schema/tx"
<?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"
xmlns:tx="http://www.springframework.org/schema/tx"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<context:component-scan base-package="com.atguigu