#mongodb #spring-boot #spring-webflux #mongodb-atlas #reactive-mongo-java
Вопрос:
Я работал в приложении с Spring webflux и реактивной базой данных mongo. там я использовал атлас базы данных mongo в качестве базы данных, и он работал нормально.
Недавно мне пришлось ввести пользовательское преобразование mongo для обработки зональных объектов даты и времени.
@Configuration
public class MongoReactiveConfiguration extends AbstractReactiveMongoConfiguration{
@Override
public MongoCustomConversions customConversions() {
ZonedDateTimeReadConverter zonedDateTimeReadConverter = new ZonedDateTimeReadConverter();
ZonedDateTimeWriteConverter zonedDateTimeWriteConverter = new ZonedDateTimeWriteConverter();
List<Converter<?, ?>> converterList = new ArrayList<>();
converterList.add(zonedDateTimeReadConverter);
converterList.add(zonedDateTimeWriteConverter);
return new MongoCustomConversions(converterList);
}
@Override
protected String getDatabaseName() {
// TODO Auto-generated method stub
return "stlDB";
}
}
Однако теперь я больше не могу подключиться к mongo db atlas, он игнорирует параметр spring.data.mongodb.uri и пытается подключить локальный сервер с конфигурацией по умолчанию.
я пытался
@EnableAutoConfiguration(exclude={MongoReactiveAutoConfiguration.class})
но затем он также проигнорировал вышеуказанные преобразования. Существуют ли какие-либо другие конфигурации для переопределения, AbstractReactiveMongoConfiguration
чтобы игнорировать IP-адрес и порт сервера по умолчанию?
Комментарии:
1. Если вы предоставите свою собственную конфигурацию mongo (как вы это сделали), Spring Boot откажется от ее настройки. Так что да, добавление этого позволит Spring Boot игнорировать конфигурацию. Вместо этого добавление
@Configuration
, содержащее@Bean
значение дляMongoCustomConversion
, может сделать свое дело.
Ответ №1:
У меня была та же проблема, и я не мог найти другого решения, кроме как настроить конвертеры по-другому, не расширяя абстрактную конфигурацию.:
@Configuration
public class MongoAlternativeConfiguration {
@Bean
public MongoCustomConversions mongoCustomConversions() {
return new MongoCustomConversions(
Arrays.asList(
new ZonedDateTimeReadConverter(),
new ZonedDateTimeWriteConverter()));
}
}