当前位置: 首页 > 知识库问答 >
问题:

如何在Spring数据(和Spring数据Rest)中通过Java配置配置审计?

阳昊
2023-03-14

我正在尝试使用Spring数据的审核功能(与Spring Boot和Spring数据Rest结合使用),但审核字段没有设置在save上。所有保存操作都会导致试图保存空“创建人”的约束异常

根据spring数据文档,我应该能够在实体上放置适当的审计注释(@CreatedDate/etc),并制作一个AuditorAware

我的问题是:

1)我是否有必要创建一个AuditingEntityListener,或者我是否应该期望通过@EnableJpaAudting提供一个?(文档中没有明确说明java配置)

2)下面的代码中是否有其他设置自动审核的配置?

3) 我将创建代码从POST调用到Spring Data Rest,将此审计功能与Spring Data Rest结合使用是否有任何特殊的注意事项?

@Entity
public class Tag implements Serializable {

    // ... other fields omitted...

    @CreatedDate
    @Temporal(TemporalType.TIMESTAMP)
    private Date created = new Date();

    @CreatedBy
    @Basic(optional = false)
    @Column(name = "CREATED_BY", nullable = false, length = 24)
    private String createdBy = "";

    @LastModifiedDate
    @Basic(optional = false)
    @Column(nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date updated = new Date();

    @LastModifiedBy
    @Basic(optional = false)
    @Column(name = "UPDATED_BY", nullable = false, length = 24)
    private String updatedBy = "";

    // ... getters and setters were generated ...

以及配置:

@EnableJpaAuditing
@Configuration
public class AuditingConfig {

    @Bean
    public AuditorAware<String> createAuditorProvider() {
        return new SecurityAuditor();
    }

    @Bean
    public AuditingEntityListener createAuditingListener() {
        return new AuditingEntityListener();
    }

    public static class SecurityAuditor implements AuditorAware<String> {
        @Override
        public String getCurrentAuditor() {
            Authentication auth = SecurityContextHolder.getContext().getAuthentication();
            String username = auth.getName();
            return username;
        }
    }

}

非常感谢您的帮助,谢谢!

共有1个答案

晏经武
2023-03-14

1)我是否有必要创建一个AuditingEntityListener,或者我是否应该期望通过@EnableJpaAudting提供一个?(文档中没有明确说明java配置)

答:不,您不需要定义AuditingEntityListenerbean。相反,您需要在域类上指定@EntityListeners(AuditingEntityListener.class)

e、 g。

@Entity
@EntityListeners(AuditingEntityListener.class)
public class Tag implements Serializable {

}

2)下面的代码中是否有其他设置自动审核的配置?

回答:其他配置设置看起来不错。

3) 我将创建代码从POST调用到Spring Data Rest,将此审计功能与Spring Data Rest结合使用是否有任何特殊的注意事项?

答:我想不会。试试上面建议的改变。它应该会起作用。

 类似资料:
  • 希望有人能帮我。我正在用mongo处理一个spring数据,但不知为什么它给了我一个运行时错误: null 我的mongo-config.xml: null 提前道谢!

  • 我有一个基于Spring框架的项目,它只基于Java配置进行初始化。这意味着不需要使用web.xml文件。 您可以在下面的图像中看到项目的结构: Java 7 Spring framework 4.2.1.发布 HibernateORM 5.0.4.final Spring Tool Suite IDE 3.6.2 Maven3 Tomcat 7 数据源 而SystemSettings保存数据库的

  • 我正在读《Web应用程序的专业Java——尼古拉斯·威廉姆斯》这本书的例子对Spring Data JPA有这样的配置: 但我一直在使用XML进行配置,我不知道如何仅将其转换为XML,到目前为止我已经有了这个 有谁能指导我如何转换这个吗? 谢谢

  • 问题内容: 目前,我正在使用带有@Transactional批注的DriverManagerDataSource来管理事务。但是所有事务都非常非常慢,这可能是因为数据源每次都打开和关闭与db的连接。 我应该使用什么数据源来加快交易速度? 问题答案: 实际上不是连接池,只能用于测试。您应该尝试使用Apache Commons DBCP 。就像是:

  • 我试图创建一个Spring启动应用程序使用Sqlite数据库。 我在pom中添加了sqlite-jdbc和sqlite-方言依赖。 我的apllication.properties文件是: 但我在启动应用程序时遇到以下异常: 我错过了什么?