解决SpringBoot在使用AOP切片时DATE类型出现Argument is not assignable to ‘lombok.Data‘ 的问题

作者 : admin 本文共1213个字,预计阅读时间需要4分钟 发布时间: 2024-06-10 共6人阅读

场景:在使用aop切片时,里面的自动赋值给updateTime的时候报错 

(ps:学习AOP相关知识请参考:SpringBoot的特性之一:AOP-CSDN博客)

以下是报错信息:

06-05 11:39:19 INFO  :
06-05 11:39:19 INFO  :
06-05 11:39:19 ERROR :
06-05 11:39:19 ERROR : 全局异常信息 ex=java.lang.NoSuchMethodException: com.ycg.vue.Entity.UserEntity.setUpdateTime(lombok.Data)
06-05 11:39:19 WARN  : Resolved [java.lang.RuntimeException: java.lang.NoSuchMethodException: com.ycg.vue.Entity.UserEntity.setUpdateTime(lombok.Data)]

以下是本人aop原代码片段:

case UPDATE: {
  log.info("");
  entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_BY, String.class).invoke(entity, ThreadLocalContext.getUserId());
  entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_TIME, Date.class).invoke(entity, now);
  break;
}

 报错和提示大概是说,无法映射到date这个类,查阅大量资料无果后开始一点点排查,先是去实体类中手写了一个set方法还是不行,然后就发现,反射的实体类字段的类型我写的是Date.class,我就想是不是因为有好几个Date类,所以不知道映射哪一个,然后我就把类改成了jdk的,也就是:java.util.Date.class。

case UPDATE: {
  log.info("");
  entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_BY, String.class).invoke(entity, ThreadLocalContext.getUserId());
  entity.getClass().getDeclaredMethod(AspectConstant.SET_UPDATE_TIME, java.util.Date.class).invoke(entity, now);
  break;
}

完美解决,其实这时候我才发现,没改之前把鼠标放上去还出现了Argument is not assignable to ‘lombok.Data’ 的提示,正好也跟上面吻合,我太爱(tao yan)反射了,看来还是不够细心,还需努力啊!

本站无任何商业行为
个人在线分享 » 解决SpringBoot在使用AOP切片时DATE类型出现Argument is not assignable to ‘lombok.Data‘ 的问题
E-->