shanshandeisu 2023-10-21 15:26 采纳率: 58.3%
浏览 19
已结题

spring/springboot自定义aop注解失效

问题:自定义aop注解失效

详细描述

我用aop,自定义了一个注解,对于所有添加进数据库的数据的公共字段“create_time”等,进行自动填充。在前两天测试添加用户时,该注解可以生效。今天新写添加菜品的代码,测试失败。

自定义枚举类

自定义了两个数据库操作类型INSERT和UPDATE。

img

自定义注解AutoFill

可以看到注解的作用对象时自定义的INSERT和UPDATE方法

img

自定义切面AutoFillAspect

可以看到里面最上面是有一句日志打印的。切入点是mapper包底下的INSERT和UPDATE方法。

img

菜品服务实现类

img

菜品mapper类

可以看到insert方法上加了AutoFill注解。

img

运行结果

前后端联调后去数据库看,公共字段没有被附上值。且运行日志连“开始进行公共字段自动填充”那句话都没有打印出来。

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-21 21:44
    关注

    【以下回答由 GPT 生成】

    答案:

    从你提供的信息来看,自定义的AOP注解失效可能有以下几个原因:

    1. 注解未被正确扫描:Spring AOP默认只会对被Spring容器管理的Bean进行AOP处理。请确保AutoFillAspect被正确扫描并注册为Spring的Bean。

    解决方案: 可以在AutoFillAspect类上添加@Component注解,确保该类被Spring容器扫描到,或者在配置类上添加@EnableAspectJAutoProxy注解,启用Spring AOP自动代理。

    @Component
    @Aspect
    public class AutoFillAspect {
        // ...
    }
    
    1. 切入点表达式不正确:可能是切入点表达式配置不正确导致无法匹配到对应的方法。

    解决方案: 请确保切入点表达式配置正确,可以尝试修改切入点表达式,确保能够匹配到菜品mapper类中的insert方法。

    @Pointcut("execution(* com.example.mapper.*.insert(..))")
    
    1. 自定义的AOP注解未被识别:可能是@AutoFill注解未被正确识别导致切面无法拦截到目标方法。

    解决方案: 请确保自定义的@AutoFill注解被正确定义,并且添加了@Inherited注解。

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    public @interface AutoFill {
        // ...
    }
    
    1. 依赖版本冲突:可能是Spring AOP依赖与其他依赖版本冲突导致AOP失效。

    解决方案: 请检查项目中Spring AOP依赖的版本,并尝试更新或排除冲突的依赖。

    以上是常见的可能导致自定义AOP注解失效的原因和解决方案。如果以上解决方案都无效,请提供更多相关代码和配置以便进一步分析和排查问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月21日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀