当前位置: 首页 > 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.sczhlp.com/news/642.html

相关文章:

  • 小作业 7(5 道不等式练习题)
  • CF2128F Strict Triangle
  • Dubbo
  • AWS上实现超大规模模型训练的近线性扩展
  • 现代Web服务器性能革命:我的Rust框架探索之旅(6906)
  • Hyperlane性能调优秘籍:从毫秒级响应到百万QPS的优化之路(0548)
  • 实时通信协议的Rust实现(4131)
  • Rust生态系统在Web开发中的优势(9336)
  • TCP连接优化的实战经验(3008)
  • 高并发处理的Rust实现方案(6871)
  • 内存使用效率的终极对决:零拷贝技术的实战应用(0581)
  • 实时通信技术深度对比:WebSocket与SSE的最佳实践(4367)
  • Hyperlane框架的高级特性深度解析:从零拷贝到宏系统的完美融合(8284)
  • WebSocket服务端的高效处理(2177)
  • 跨平台Web服务开发的新选择(5907)
  • 异步编程在Web开发中的应用(9589)
  • 从零开始构建高性能实时聊天系统:Hyperlane框架实战指南(3242)
  • 高性能路由系统的设计与实现(4242)
  • 现代Web框架的性能基准测试(8242)
  • HTTP响应处理的灵活设计(2278)
  • HTTP请求处理的高效封装(6235)
  • Web服务器性能大比拼:谁才是真正的速度之王(0372)
  • 中间件架构设计模式:从Express到现代Rust框架的演进(4232)
  • 中间件架构的优雅实现(8032)
  • Rust异步Web框架性能突破之路(1499)
  • 实战项目:文件分块上传系统(5527)
  • 实时通信协议的Rust实现(9068)
  • 现代Web框架的性能基准测试(3667)
  • HTTP响应处理的灵活设计(8184)
  • 实战项目:文件分块上传系统(2427)