Spring Data MongoDB 1.2.0静默引入了新功能:支持基本审核 。 因为您不会在本文的官方参考中找到太多有关它的信息,所以我将展示它带来的好处,如何配置Spring以进行审计以及如何对文档进行注释以使其可审计。 审核使您可以声明性地告诉Spring存储:
- 文档创建的日期: @CreatedDate
- 上次文档更新的日期: @LastModifiedDate
- 创建文档的用户: @CreatedBy
- 最近更新的用户: @LastModifiedBy
- 当前文档版本: @Version
组态
首先,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 {@Idprivate String id;... @Versionprivate Long version;@CreatedDateprivate DateTime createdAt;@LastModifiedDateprivate DateTime lastModified;...
}
现在,您可以使用MongoTemplate或存储库保存文档,并且所有带注释的字段均已自动设置。
您可能已经注意到,我在这里没有使用用户相关的注释@CreatedBy和@LastModifiedBy 。 为了使用它们,我们需要告诉Spring谁是当前用户。
首先,将与用户相关的字段添加到审核的类中:
@CreatedBy
private String createdBy;@LastModifiedBy
private String lastModifiedBy;
然后创建您的AuditorAware实现,该实现将获取当前用户(可能从会话或Spring Security上下文中获取-取决于您的应用程序):
public class MyAppAuditor implements AuditorAware<String> {@Overridepublic String getCurrentAuditor() {// get your user name herereturn "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