spring boot 4.6 版本 加入了 乐观锁 数据审计功能的hander 就失效了

Blade 未结 2 81
382138516
382138516 剑圣 2025-07-14 14:00

一、该问题的重现步骤是什么?

//  @Bean
//  public MybatisPlusInterceptor mybatisPlusInterceptor(ObjectProvider<QueryInterceptor[]> queryInterceptors,
//                                          TenantLineInnerInterceptor tenantLineInnerInterceptor,
//                                          MybatisPlusProperties mybatisPlusProperties) {
//     MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//     // 配置租户拦截器
//     if (mybatisPlusProperties.getTenantMode()) {
//        interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
//     }
//     // 配置分页拦截器
//     BladePaginationInterceptor paginationInterceptor = new BladePaginationInterceptor();
//     // 配置自定义查询拦截器
//     QueryInterceptor[] queryInterceptorArray = queryInterceptors.getIfAvailable();
//     if (ObjectUtil.isNotEmpty(queryInterceptorArray)) {
//            assert queryInterceptorArray != null;
//            AnnotationAwareOrderComparator.sort(queryInterceptorArray);
//        paginationInterceptor.setQueryInterceptors(queryInterceptorArray);
//     }
//     paginationInterceptor.setMaxLimit(mybatisPlusProperties.getPageLimit());
//     paginationInterceptor.setOverflow(mybatisPlusProperties.getOverflow());
//     paginationInterceptor.setOptimizeJoin(mybatisPlusProperties.getOptimizeJoin());
//     // 配置分页拦截器
//     interceptor.addInnerInterceptor(paginationInterceptor);
//     // 配置乐观锁拦截器
//     interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
//     return interceptor;
//  }



加入 乐观锁拦截器之后 数据审计功能 的 hander 就失效了

二、你期待的结果是什么?实际看到的又是什么?

希望给出 解决办法

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

boot 版本 更新了4.6 之后加入数据审计功能

四、请提供详细的错误堆栈信息,这很重要。

没有错误信息 就是 数据审计的hander 不进入了

五、若有更多详细信息,请在下面提供。

2条回答
  • 2025-07-14 14:06

    没遇到你说的问题

    CleanShot20250714140515@2x.png

    CleanShot20250714140454@2x.png


    另外审计组件底层用的mybatis-plus的数据变动插件,如果他不支持的场景,那就无法支持:https://baomidou.com/plugins/data-change-recorder/




    0 讨论(0)
  • 2025-07-14 14:16
    MybatisPlusInterceptor (ObjectProvider<QueryInterceptor[]> queryInterceptors,
                                             TenantLineInnerInterceptor tenantLineInnerInterceptor,
                                             MybatisPlusProperties mybatisPlusProperties) {
        MybatisPlusInterceptor interceptor = MybatisPlusInterceptor();
        (mybatisPlusProperties.getTenantMode()) {
           interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
        }
        BladePaginationInterceptor paginationInterceptor = BladePaginationInterceptor();
        QueryInterceptor[] queryInterceptorArray = queryInterceptors.getIfAvailable();
        (ObjectUtil.(queryInterceptorArray)) {
               queryInterceptorArray != ;
               AnnotationAwareOrderComparator.(queryInterceptorArray);
           paginationInterceptor.setQueryInterceptors(queryInterceptorArray);
        }
        paginationInterceptor.setMaxLimit(mybatisPlusProperties.getPageLimit());
        paginationInterceptor.setOverflow(mybatisPlusProperties.getOverflow());
        paginationInterceptor.setOptimizeJoin(mybatisPlusProperties.getOptimizeJoin());
        interceptor.addInnerInterceptor(paginationInterceptor);
        interceptor.addInnerInterceptor(OptimisticLockerInnerInterceptor());
        interceptor;
    } 这段代码 是官网给的例子,我如果注释掉了 这段代码 数据审计 就会调用 hander  否则 就不会调用 我这都复现这个步骤了


    作者追问:2025-07-14 14:17

    仔细看上面截图,对比少什么东西就加上去

    0 讨论(0)
代码语言
提交回复