声明式事务不管用

今天项目中有个方法需要使用事务,我在业务层 添加了 注解 @Before(Tx.class),然后故意写了一个 除0 异常。但是操作数据库的方法并没有回滚。

1.png

但是使用如下方式的时候,就可以回滚。

Db.tx(() -> {

  ..... // 业务处理代码

  return true;

});

这是为什么呢?

评论区

JFinal

2020-03-27 18:20

业务层拦截器触发条件,任选其一:
1:在 controller 中通过 @Inject 来注入业务层
2:使用 Aop.get(...) 获取业务层对象

通过上面两种方式得到的业务对象,才是被 aop 代理过的,才会让拦截器生效,注意看文档