在spring boot中进行mongodb审计以保存createdDate,lastModifiedDate,createdBy,lastModifiedBy

时间:2017-01-19 12:21:52

标签: java spring mongodb maven

我正在使用spring boot,因此我没有使用任何xml文件进行配置。 我要做的是EnableMongoAuditing保存createdDate,lastModifiedDate等,同时使用MongoRepositories保存数据。

我的模特课

@Component
@Document(collection = "CAPPING")
public class TemporaryCapping extends BaseEntity {

    @Field("contract_id")
    private BigInteger contractId;

    @Field("period_id")
    private BigInteger periodId;

    @Field("user_id")
    private BigInteger userId;

    @Field("amount")
    private Double amount;

    @Field("type_of_capping")
    private TypeOfCapping typeOfCapping;

    public BigInteger getContractId() {
        return contractId;
    }

    public void setContractId(BigInteger contractId) {
        this.contractId = contractId;
    }

    public BigInteger getPeriodId() {
        return periodId;
    }

    public void setPeriodId(BigInteger periodId) {
        this.periodId = periodId;
    }

    public BigInteger getUserId() {
        return userId;
    }

    public void setUserId(BigInteger userId) {
        this.userId = userId;
    }

    public Double getAmount() {
        return amount;
    }

    public void setAmount(Double amount) {
        this.amount = amount;
    }

    public TypeOfCapping getTypeOfCapping() {
        return typeOfCapping;
    }

    public void setTypeOfCapping(TypeOfCapping typeOfCapping) {
        this.typeOfCapping = typeOfCapping;
    }


}



public class BaseEntity implements Serializable{

@Id
@Indexed(unique = true)
private BigInteger id;

@CreatedDate
private DateTime createdDate;

@Field("modified_date")
private BigInteger modifiedDate;

public BigInteger getId() {
    return id;
}

public void setId(BigInteger id) {
    this.id = id;
}

public DateTime getCreatedDate() {
    return createdDate;
}

public void setCreatedDate(DateTime createdDate) {
    this.createdDate = createdDate;
}

public BigInteger getModifiedDate() {
    return modifiedDate;
}

public void setModifiedDate(BigInteger modifiedDate) {
    this.modifiedDate = modifiedDate;
}

我使用@CreateDate注释来保存createDate。 我使用了DateTime的jodatime依赖

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

spring-data-mongodb也被添加到依赖项中。

这是我的主要应用程序类

 @SpringBootApplication
    @EnableMongoAuditing
   public class Application {

   public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
   }

} 

由于日期没有保存在数据库中,我在这个实施中错了? 另外我知道为了保存@createdBy你需要编写AuditorAware bean但是现在我只是想保存createdBy。

@EnableMongoAuditing应该在哪里使用?

2 个答案:

答案 0 :(得分:1)

在我的应用程序中,我通过Java代码进行配置。我以这种方式使用@EnableMongAuditing,并为ZonedDateTime创建转换。

@Library

答案 1 :(得分:0)

@EnableMongoAuditing实际上可以放在配置中的任何位置(@Configuration注释旁边)