审核 (@CreatedDate) 不适用于 WebFlux Spring 使用反应启动 MongoDB
Auditing (@CreatedDate) does not work for WebFlux Spring Boot with reactive MongoDB
WebFlux Spring 反应启动 MongoDB 是否支持审计?
我尝试使用 @CreatedDate
但它对我不起作用。
这是我的配置:
@Configuration
@EnableReactiveMongoRepositories
@EnableMongoAuditing
@AllArgsConstructor
public class ReactiveMongoConfiguration extends AbstractReactiveMongoConfiguration {
...
}
这是我的文档class
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.Id;
import org.springframework.data.domain.Persistable;
import org.springframework.data.mongodb.core.mapping.Document;
...
import java.util.Date;
@Document
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Message implements Persistable<String> {
@Id private String id;
private String text;
@CreatedDate
private Date createdDate;
@Override
public boolean isNew() {
return createdDate == null;
}
这是消息存储库
@Repository
public interface IMessageRepository extends ReactiveMongoRepository<Message, String> {}
当我保存消息时 messageRepository.save(message)
我总是 createdDate=null
我是不是遗漏了什么或者审核对反应式 MongoDB 不起作用?
我使用 @EnableReactiveMongoAuditing
解决了这个问题,而不是像我最初那样使用 @EnableMongoAuditing
。显然,反应式注释应该与 ReactiveMongoRepositories
一起使用。所以正确的配置如下:
@Configuration
@EnableReactiveMongoRepositories
@EnableReactiveMongoAuditing
@AllArgsConstructor
public class ReactiveMongoConfiguration extends AbstractReactiveMongoConfiguration {
...
}
因此在保存消息后会自动添加相应的 createdDate
:
{ "_id" : ObjectId("628a01d77f74d46c62a5bb36"), "text" : "Hello", "createdDate" : ISODate("2022-05-22T09:26:47.280Z"), "_class" : "com.mgtest.app.model.dao.Message" }
WebFlux Spring 反应启动 MongoDB 是否支持审计?
我尝试使用 @CreatedDate
但它对我不起作用。
这是我的配置:
@Configuration
@EnableReactiveMongoRepositories
@EnableMongoAuditing
@AllArgsConstructor
public class ReactiveMongoConfiguration extends AbstractReactiveMongoConfiguration {
...
}
这是我的文档class
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.Id;
import org.springframework.data.domain.Persistable;
import org.springframework.data.mongodb.core.mapping.Document;
...
import java.util.Date;
@Document
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Message implements Persistable<String> {
@Id private String id;
private String text;
@CreatedDate
private Date createdDate;
@Override
public boolean isNew() {
return createdDate == null;
}
这是消息存储库
@Repository
public interface IMessageRepository extends ReactiveMongoRepository<Message, String> {}
当我保存消息时 messageRepository.save(message)
我总是 createdDate=null
我是不是遗漏了什么或者审核对反应式 MongoDB 不起作用?
我使用 @EnableReactiveMongoAuditing
解决了这个问题,而不是像我最初那样使用 @EnableMongoAuditing
。显然,反应式注释应该与 ReactiveMongoRepositories
一起使用。所以正确的配置如下:
@Configuration
@EnableReactiveMongoRepositories
@EnableReactiveMongoAuditing
@AllArgsConstructor
public class ReactiveMongoConfiguration extends AbstractReactiveMongoConfiguration {
...
}
因此在保存消息后会自动添加相应的 createdDate
:
{ "_id" : ObjectId("628a01d77f74d46c62a5bb36"), "text" : "Hello", "createdDate" : ISODate("2022-05-22T09:26:47.280Z"), "_class" : "com.mgtest.app.model.dao.Message" }