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