Как настроить MappingMongoConverter (setMapKeyDotReplacement) в Spring-Boot без нарушения автоматической настройки?
Как я могу настроить MappingMongoConverter в моем Spring-Boot-приложении (1.3.2.Релиз) без изменения какого-либо монго-материала, который автоматически настраивается spring-data?
Мое текущее решение:
@Configuration
public class MongoConfig {
@Autowired
private MongoDbFactory mongoFactory;
@Autowired
private MongoMappingContext mongoMappingContext;
@Bean
public MappingMongoConverter mongoConverter() throws Exception {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
//this is my customization
mongoConverter.setMapKeyDotReplacement("_");
mongoConverter.afterPropertiesSet();
return mongoConverter;
}
}
Это правильный путь или я должен сломать некоторые вещи с этим?
Или есть еще более простой способ установить mapKeyDotReplacement?
3 ответов:
, Что это правильный способ сделать это. Автонастройка
MappingMongoConverterсопровождается аннотацией@ConditionalOnMissingBean(MongoConverter.class), поэтому добавление собственного компонентаMappingMongoConverterприведет к тому, что автонастройка отступит в пользу вашего пользовательского конвертера.Одна небольшая поправка: вам не нужно звонить
mongoConverter.afterPropertiesSet(). Контейнер вызовет это для вас.
Я столкнулся с этой проблемой в последней версии spring boot. Ваш подход не сработал ни для меня, ни для принятых answer...my загрузочное приложение, казалось, игнорировало мой пользовательский конвертер карт.
Итак, что я сделал в config class I autowired в MappingMongoConverter, который использует boot, а затем установил setMapKeyDotReplacement на этом.
@Autowired private MappingMongoConverter mongoConverter; // Converts . into a mongo friendly char @PostConstruct public void setUpMongoEscapeCharacterConversion() { mongoConverter.setMapKeyDotReplacement("_"); }
Также есть более короткая версия:
@Autowired void setMapKeyDotReplacement(MappingMongoConverter mappingMongoConverter) { mappingMongoConverter.setMapKeyDotReplacement("_"); }Не забудьте поместить его в класс, о котором будет знать Весна-например, класс с аннотацией
@Configuration
Comments