当前位置: 首页 > news >正文

spring-data-JPA代码审计

什么是代码审计:用于记录实体的创建者、修改者以及操作的对应时间的信息,这些功能在日志记录与数据版本管理中非常有用

阿里手册里要求非常详细,这些审计功能远远不足以满足(如果你和我看的是一门课你就知道我在说谁了)

不过这个功能还是比较强大的,毕竟JPA可以自动修改表,因此可以直接搓一个BaseEntity,里面写好序列化、唯一性的ID加上代码审计需要的四个字段,后续使用很方便

那么先写一下如何实现代码审计这个功能:

1.注入bean

@Configuration
public class UserAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
return Optional.of("");//这里需要放入当前操作的用户信息
}
}

2.在启动类添加注解

@EnableJpaAuditing

3.修改entity,加上类注解和字段注解

类注解为

@EntityListeners(AuditingEntityListener.class)

字段注解分别为

@CreatedBy
private String createdBy;
@CreatedDate
private Date createdDate;
@LastModifiedBy
private String lastModifiedBy;
@LastModifiedDate
private Date lastModifiedDate;

 

问题注意:

无法记录删除操作,删除后实体数据会被移除(不过这里可以用逻辑删除,加一个deleted字段,可能我后续会写一下),该功能需要spring-aspects.jar

整合一个BaseEntity:

@MappedSuperclass表示当前类不是一个完整的实体类,不会映射到数据库表中,但当前类的属性会映射到子类对应的数据库字段中,因此这个注解是和@Entity、@Table冲突的

@MappedSuperclass
@Getter
@Setter
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
protected Long id;
@CreatedBy
protected String createdBy;

@LastModifiedBy
protected String modifiedBy;

@CreatedDate
protected Date createdDate;

@LastModifiedDate
protected Date modifiedDate;

}

 

http://www.vanclimg.com/news/933.html

相关文章:

  • 不同Linux发行版Node安装指南
  • 虚化引擎游戏解包工具
  • Qcom dcvs_epss.c 驱动解析.
  • AirSim+PX4+QGC实现无人机自动避障
  • js基础第五天
  • 简单了解高阻抗(High-Z)
  • docker安装
  • 二进制简史:从理论到芯片
  • js基础第四天
  • 同时点亮LED、数码管以及点阵
  • 关于跨域的一点新理解
  • js基础第三天
  • 龙哥量化:股票期货- 精华资料目录
  • 2025省选组合数学笔记
  • FM2023利兹联崛起之路#1
  • 07.08 论文精读 人像线稿生成模型
  • 暑训#3补题
  • 【LeetCode 141】算法:环形链表
  • 春训#2题解
  • 国内AI编码工具哪家强CodeBuddy+通义灵码+Trae
  • js基础第二天
  • [PaperReading] Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets
  • Wireshark入门指南:网络流量分析利器
  • 2025/7/28 总结
  • 7.27 周总结
  • 存贮电解液配方的二进制格式与解析它的010 Editor的模板
  • 读《大道至简——软件工程实践者的思想》有感
  • 垃圾话1
  • 春训#1题解
  • js第一天