spring中有三种实现事务的方法
1.编程式实现事务,需要三个对象;
PlatformTranscationalManager .
TranscationalDefinition,
TranscationStatus
下面两种是声明式的事务
2.xml实现事务
spring中事务的实现是依赖于aop,所以需要aop的三要素
切点:要被事务增强的方法
通知:PlatformTranscationalManager,事务管理对象,平台事务管理器对象就是事务的通知,这是个接口,不同的实现类可以支持不同持久层技术的事务支持
首先需要把这个平台事务管理器注册到ioc容器中
<bean id = "transacionManager" class = "com.springframework.jdbc.datasource.DataSourceTranscacionManager">
<property name = "datasource" ref="datasource">
<bean/>
然后构造通知:通知需要指定事务管理器,就是刚才注册的事务管理器,在通知里面可以设定事务的属性,比如隔离级别,传播级别,等等。。。
<tx:advice id = "txAdvice" transaction-manager = "transacionManager">
<tx:attributes>
<!-- 可以对getUser( )方法进行一些单独的事务自定义设置-->
<tx: methond = "getUser" isolation = "隔离级别" propagation = "传播机制">
<tx:attributes>
<tx:advice>
切面:事务的切面使用的是advisor,因为通知只有一个,把刚才的通知织入到特定的目标方法中
<aop: advisor advice = "txAdvice" pointcut = "(*())">
3、注解实现事务
需要在配置类标注@EnableTransactional注解
在需要事务支持的方法上添加@Transactional注解即可,这个注解里的参数可以设定事务的属性,隔离级别,传播机制等等、、