鸡鸭扣 2023-10-21 15:26 采纳率: 58.3%
浏览 12
已结题

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 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开