Spring Data MongoDB中的审核实体

Spring Data MongoDB 1.2.0静默引入了新功能:支持基本审核 。 因为您不会在本文的官方参考中找到太多有关它的信息,所以我将展示它带来的好处,如何配置Spring以进行审计以及如何对文档进行注释以使其可审计。 审核使您可以声明性地告诉Spring存储:

组态

首先,Maven依赖于最新的Spring Data MongoDB和Spring Data Commons。 另外,为了使用与日期相关的审计注释,我们需要在类路径中添加joda-time

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.2.1.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>1.5.1.RELEASE</version>
</dependency>

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.2</version>
</dependency>

为了启用审计,我们需要在Spring配置中添加<mongo:auditing /> 。 当前无法通过Java Config对其进行配置。

<mongo:auditing />

<mongo:mongo id="mongo" />

<bean class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongo" ref="mongo" />
    <constructor-arg name="databaseName" value="blog-tests" />
</bean>

用法

上面的配置为我们提供了包括版本控制和时间戳在内的审计方法。 示例文档如下所示:

@Document
public class Item {
    @Id
    private String id;

    ...    

    @Version
    private Long version;
    @CreatedDate
    private DateTime createdAt;
    @LastModifiedDate
    private DateTime lastModified;

    ...
}

现在,您可以使用MongoTemplate或存储库保存文档,并且所有带注释的字段均已自动设置。

您可能已经注意到,我在这里没有使用用户相关的注释@CreatedBy@LastModifiedBy 。 为了使用它们,我们需要告诉Spring谁是当前用户。

首先,将与用户相关的字段添加到审核的类中:

@CreatedBy
private String createdBy;

@LastModifiedBy
private String lastModifiedBy;

然后创建您的AuditorAware实现,该实现将获取当前用户(可能从会话或Spring Security上下文中获取-取决于您的应用程序):

public class MyAppAuditor implements AuditorAware<String> {

    @Override
    public String getCurrentAuditor() {
        // get your user name here
        return "John Doe";
    }
}

最后一件事是通过对Mongo配置进行少量修改来告诉Spring Data MongoDB有关此审计师的类:

<mongo:auditing auditor-aware-ref="auditor" />
<bean id="auditor" class="pl.maciejwalkowiak.blog.MyAppAuditor"/>


翻译自: https://www.javacodegeeks.com/2013/05/auditing-entities-in-spring-data-mongodb.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值