Springboot игнорирует uri MongoDB atlas, пытаясь подключить хосты=[127.0.0.1:27017]

#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()));
    }
}