1、编程式事务管理
在实际应用中很少使用,要手动改service层中的代码
通过TransactionTemplate手动管理事务
2、使用XML配置声明式事务
开发中推荐使用,代码侵入性最小
Spring的声明式事务是通过AOP实现的
2.1基于TransactionProxyFactoryBean的方式(不常用,因为要为每一个类配置TransactionProxyFactoryBean)
①在applicationContext.xml中配置transactionManager事务管理器
②为service生成代理类(主要包括事务管理器、属性、目标类等)
③属性有
<prop key=" * ">propagation(传播行为),isolation(隔离级别),readOnly(只读事务),-Exception(回滚),+Exception(不回滚)</prop>
2.2基于AspectJ的XML方式(常用,可配置在某些类下的所有子类,在业务层不需要添加什么)
①配置事务管理器
②配置事务的通知(事务的增强)
③配置切面(包括切入点、切面)
2.2基于注解的方式(常用,配置简单,但需要在业务层添加@Transactional注解)
在业务实现类上加上@Transactional注解,它有一些属性,写在后面的()中,例如:
@Transactional(propagation=propagation.required,RollbackFor,noRollbackFor)
①配置事务管理器
②开启注解事务