关于aop:Spring中基于AOP的事务管理

47次阅读

共计 989 个字符,预计需要花费 3 分钟才能阅读完成。

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
    

正文完
 0