我一直在尝试注册自己的编写自定义转换器来更改默认 ID 值。但它从未真正调用过。这是我的自定义转换器
public class EventKeyConverter implements Converter<Event,DBObject> {
@Override
public DBObject convert(Event object) {
DBObject dbObject = DBObjectTransformer.toDBObject(object);
dbObject.put("_id", KeyGenerator.getRandomKey());
return dbObject;
}
}
这是我注册客户转换器的地方
@Override
@Bean
public CustomConversions customConversions() {
List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
converters.add(new EventKeyConverter());
return new CustomConversions(converters);
}
@Override
@Bean
public MappingMongoConverter mappingMongoConverter() throws Exception {
MappingMongoConverter converter = new MappingMongoConverter(
eventsMongoDbFactory(), mongoMappingContext());
converter.setCustomConversions(customConversions());
return converter;
}
@Bean
public MongoTemplate eventsMongoTemplate() throws Exception {
final MongoTemplate template = new MongoTemplate(
eventsMongoDbFactory(), mappingMongoConverter());
template.setWriteResultChecking(WriteResultChecking.EXCEPTION);
return template;
}
当我保存一些对象时,这个转换器永远不会被调用。
编辑 1:我需要在所有存储库中将默认对象 ID 更改为一些自定义 ID(UUID + 随机键)。这就是我尝试使用 mongo 转换器的原因。
编辑2: 刚刚发现问题。在包含 customConversion() 的类中将 @Configuration 更改为 @Component 并且它工作正常。但仍然想知道这里发生了什么?