Я пытался зарегистрировать свои собственные конвертеры для записи, чтобы изменить значение идентификатора по умолчанию. Но на самом деле никогда не звонит. Вот мой пользовательский конвертер
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: мне нужно изменить идентификатор объекта по умолчанию на какой-то пользовательский идентификатор (UUID + случайный ключ) во всех репозиториях. Вот почему я попытался использовать конвертер монго.
Редактировать 2: только что обнаружил проблему. Измените @Configuration на @Component в классе, который содержит customConversion(), и он отлично работает. Но все же интересно, что здесь произошло?