【问题标题】:Springboot ignores the MongoDB atlas uri, trying to connect hosts=[127.0.0.1:27017]Springboot忽略MongoDB atlas uri,尝试连接hosts=[127.0.0.1:27017]
【发布时间】:2026-02-01 14:00:01
【问题描述】:

我一直在使用 Spring webflux 和响应式 mongo DB 开发应用程序。在那里我使用了 mongo DB atlas 作为数据库,它运行良好。

最近我不得不引入 mongo 自定义转换来处理 Zoned Date Time 对象。

@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 和端口?

【问题讨论】:

  • 如果您提供自己的 mongo 配置(就像您所做的那样),Spring Boot 将退出配置它。所以是的,添加这个会让 Spring Boot 忽略配置。相反,为MongoCustomConversion 添加一个包含@Bean@Configuration 可能会奏效。

标签: mongodb spring-boot spring-webflux mongodb-atlas reactive-mongo-java


【解决方案1】:

我遇到了同样的问题,除了在不扩展 AbstractReactiveMongoConfiguration 的情况下以不同方式配置转换器之外找不到解决方案:

@Configuration
public class MongoAlternativeConfiguration {

    @Bean
    public MongoCustomConversions mongoCustomConversions() {

        return new MongoCustomConversions(
            Arrays.asList(
                    new ZonedDateTimeReadConverter(),
                    new ZonedDateTimeWriteConverter()));
    }
}

【讨论】: