Чтобы включить аудит, нам нужно добавить конфигурацию Spring.XML или JAVA Config, в любом случае
Spring XML Configuraton
<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>
Spring Java Configuration
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.abc")
@EnableMongoRepositories(basePackages = "com.abc.xyz.repository")
@EnableMongoAuditing
public class MongoApplicationConfiguration {
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
ServerAddress serverAddress = new ServerAddress("127.0.0.1", 27017);
MongoCredential mongoCredential = MongoCredential.createCredential("user", "test", "samp".toCharArray());
MongoClient mongoClient = new MongoClient(serverAddress, Arrays.asList(mongoCredential));
return new SimpleMongoDbFactory(mongoClient, "test");
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
}
InЧтобы использовать @CreatedBy и @LastModifiedBy, вам нужно сообщить Spring, кто является текущим пользователем.
Сначала добавьте поля, относящиеся к пользователю, в ваш проверяемый класс:
@CreatedBy
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
Затем создайте реализацию AuditorAware.который получит текущего пользователя (вероятно, из сеанса или в контексте Spring Security - зависит от вашего приложения):
public class UserAudtiting implements AuditorAware<String> {
@Override
public String getCurrentAuditor() {
// get your user name here
String uname = SecurityContextHolder.getContext().getAuthentication().getName();
return Optional.of(uname);
}
}
Последнее, что нужно сказать Spring Data MongoDB об этом классе, осведомленном об аудиторе, путем небольшой модификации в конфигурации Mongo:
<mongo:auditing auditor-aware-ref="auditor" />
<bean id="auditor" class="app.demo.UserAudtiting "/>
Подробнее здесь: https://www.javacodegeeks.com/2013/05/auditing-entities-in-spring-data-mongodb.html