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