Как настроить 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?

710   3  

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

    Ничего не найдено.