Spring中基于AOP的事务管理
1.在我的项目启动类上增加@EnableTransactionManagement注解,(新版本springboot不必增加)
2.在适合的类上或者办法上增加@Transactional注解
@Transcationl
当在一个业务的办法中设置一个异样时,尽管抛出了异样,然而数据还是变动了!!
当状态从0禁止变为1(启用)时我在下面设置了抛出一个异样
刷新页面后,发现数据曾经产生了变动!!
当我在用户业务层增加 @Transactionl后
数据产生了回滚,禁止并没有变成启动!阐明transcationl失效了
readyOnly
readyOnly只读:指定事务是否是只读事务
当在用户的业务层上注解@Transactional(readOnly = true)
如果再对用户进行增删改等操作时,就会报错
当readOnly只读默认是false,在进行查问的时候应用true能够减少效率,然而对于增删改等要应用true
rollbackFor
rollbackFor:在呈现指定异样时回滚(默认RuntimeException,Error都会滚)
在扭转状态的业务办法上增加rollbackFor属性,值为自定义异样;
在valid==1时,抛出此异样;检测数据是否回滚
能够看到抛出异样,并且禁用状态并没有扭转,数据回滚了
noRollbackFor
noRollbackFor:呈现指定异样,不产生回滚
把之前的rollbackFor改为noRollbackFor
扭转状态,扭转之前是禁用
抛出异样后刷新页面,状态曾经变成启用了。阐明尽管应用@Transactional注解,抛出了异样,然而数据并没有回滚
timeout
超出设定工夫业务没有实现就回滚
isolation 事务隔离级别
如果多个事务并行执行,就会呈现脏读、幻读、反复读等景象,如果不心愿呈现这种景象,就能够设置此属性,个别设置值为 : Isolation.READ_COMMITTED
propagation 事务的流传个性
**不同业务对象(service)**中事务办法之间互相调用时,业务的传播方式。 默认是:Propagation.REQUIRES_NEW 。指多个事务之间是同一个事务对象,其中一个事务回滚,之前的事务都会回滚 如果想让其中一个事务回滚时,其余事务不回滚;就应用 Propagation.REQUIRES_NEW