【求助】springboot2 AOP实现公共字段自动填充遇到“NoSuchMethodException”的问题?

BaseEntity类

@Data
public class BaseEntity {

    @TableField(value = "create_user")
    @ApiModelProperty(value = "创建人")
    private Long createUser;

    @TableField(value = "update_user")
    @ApiModelProperty(value = "更新人")
    private Long updateUser;

    @TableField(value = "create_time")
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    @TableField(value = "update_time")
    @ApiModelProperty(value = "更新时间")
    private LocalDateTime updateTime;

}

Dict类


@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "sys_dict")
public class Dict extends BaseEntity {

    // 设置主键
    @TableId
    @TableField(value = "dict_id")
    private Long dictId;

    // 名称
    @TableField(value = "name")
    private String name;

    // 描述
    @TableField(value = "description")
    private String description;

    // 状态
    @TableField(value = "status")
    private Integer status;


}

自定义切面类

if(entity instanceof BaseEntity){
            try{
                Method setCreateTime = entity.getClass().getDeclaredMethod("setCreateTime", LocalDateTime.class);
            }catch (Exception e){
                log.error("获取实体类的方法异常:{}",e);
            }
            log.info("BaseEntity子类");
        }else{
            log.error("不是BaseEntity子类");
        }

提示“java.lang.NoSuchMethodException: com.*.Dict.setCreateTime(java.time.LocalDateTime)”
错误,在自定义切面类里打印entity.toString的话也只有 Dict类的成员属性

阅读 739
1 个回答

在 Spring Boot 2 中使用 AOP(面向切面编程) 实现 公共字段自动填充(如创建人、创建时间、修改人、修改时间)时,遇到 NoSuchMethodException 通常是由于反射调用方法时,方法不存在或参数不匹配导致的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题