Data Auditing for MongoDB

#Data Auditing for MongoDB

Like the JPA auditing provided in Spring Data JPA project, in the latest Spring Data MongoDB, it provides the same feature for MongoDB. You can mark the same annotations(@CreatedDate, @CreatedBy, @LastModifiedDate, @LastModifidedBy) on your Mongo @Document class and make these fields be filled automatically at runtime.

Enable Auditing

Add @EnableMongoAuditing on your @Configuration class if you are using Java config.

<pre> @EnableMongoAuditing(modifyOnCreate=false) public class MongoConfig extends AbstractMongoConfiguration { //... } </pre>

If you prefer XML configuration, add &ltmongo:auditing... in your configuration file.

<pre> &lt;mongo:auditing auditor-aware-ref="auditor" modify-on-creation="false"/> </pre>

Implement @AuditorWare interface

It is the same interface we have discussed in the Data JPA auditing example.

<pre> @Named(value="auditor") public class Auditor implements AuditorAware<String> { @Override public String getCurrentAuditor() { return "hantsy"; } } </pre>

Example

Change the Conference class to the following. Add @CreatedDate, @CreatedBy, @LastModifiedDate, @LastModifidedBy to verify the auditing features.

<pre> @Document public class Conference { @Id private String id; @NotNull private String name; @NotNull private String description; @CreatedBy private String createdBy; @CreatedDate private Date createdDate; @LastModifiedBy private String lastModifiedBy; @LastModifiedDate private Date lastmodifiedDate; } </pre>

Now write some codes to test it.

<pre> @Test public void retrieveConference() { Conference conference = newConference(); conference = conferenceRepository.save(conference); assertTrue(null != conference.getId()); conference = conferenceRepository.findByName("JUD2013"); assertTrue(null != conference); assertTrue("hantsy".equals(conference.getCreatedBy())); assertTrue(conference.getCreatedDate()!=null); log.debug("conference.getLastModifiedBy()@"+conference.getLastModifiedBy()); log.debug("conference.getLastmodifiedDate()@"+conference.getLastmodifiedDate()); assertTrue(conference.getLastModifiedBy()==null); assertTrue(conference.getLastmodifiedDate()==null); conference.setName("test"); conference=conferenceRepository.save(conference); assertTrue("test".equals(conference.getName())); assertTrue(conference.getLastModifiedBy()!=null); assertTrue(conference.getLastmodifiedDate()!=null); } </pre>

Check out the sample codes from my github.com account, https://github.com/hantsy/spring4-sandbox.

转载于:https://my.oschina.net/hantsy/blog/292997

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值