如何操纵我的审计项目以在 Spring Boot 中持续存在

Posted

技术标签:

【中文标题】如何操纵我的审计项目以在 Spring Boot 中持续存在【英文标题】:How to manipulate my audit item to persist in Spring Boot 【发布时间】:2021-03-15 21:57:01 【问题描述】:

我正在使用 Spring Boot 和 JpaRepository 来保存我的数据。但我需要一种方法来审核我的 jpa 请求。

问题是。我想获取在请求发生时生成的事件,并让对象持久化和旧对象并操纵它以持久化自定义审计表。我不想使用默认结构进行审核。例如,@JaversSpringDataAuditable 将审计保存在特定的表结构中。我不想这样,我只想在拦截器或类似的东西中获取结构并操纵它以保持我的特定结构

【问题讨论】:

【参考方案1】:

目前还不清楚您到底想要实现什么。因此,我将提到一些在 Spring Boot 中进行审计的简单方法,希望对您有所帮助。

对于审计 JPA 交互,您可以在 @Config 类中启用 JPA 审计宽度注释 @EnableJpaAuditing。您可以使用注释 @EntityListeners(AuditingEntityListener.class) 使实体可审计。当实体对象被持久化或更新时,审计信息将被捕获。

这种带注释的实体可以例如存储@CreatedDate@LastModifiedDate。更多信息,您可以查看the documentation of Spring。

@Entity
@EntityListeners(AuditingEntityListener.class)
public class ExampleEntity 
    
    //...
    
    @Column(name = "created_date", nullable = false, updatable = false)
    @CreatedDate
    private long createdDate;

    @Column(name = "modified_date")
    @LastModifiedDate
    private long modifiedDate;
    
    //...

如果您想在实体被持久化或更新之前执行一些操作,您可以使用注解@PrePersist@PreUpdate@PreRemove 也可用,但似乎不需要)。

@Entity
public class Example Entity 

    //...
      
    @PrePersist
    public void onPrePersist()  
        // Do something before entity is persisted
    
      
    @PreUpdate
    public void onPreUpdate()  
        // Do something before entity is updated
    

【讨论】:

以上是关于如何操纵我的审计项目以在 Spring Boot 中持续存在的主要内容,如果未能解决你的问题,请参考以下文章

如何发送纯 JSON 对象(位于模型对象内)以在 Spring Boot 中查看?

如何使用 Spring Boot 修改 HttpServletResponse 以在 json 中包含一些标准属性? [复制]

Spring Boot 事务配置

如何配置 Spring Boot 应用程序以在 MySQL 上使用 SSL/TLS?

如何从 JSON 数组在 DB 中创建表以在 Spring Boot 中创建 REST API

如何解决 java spring boot 应用程序中的安全审计查找日志注入