首页 > 解决方案 > Springboot忽略MongoDB atlas uri,尝试连接hosts=[127.0.0.1:27017]

问题描述

我一直在使用 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,它忽略了 proeprty spring.data.mongodb.uri并尝试使用默认配置连接本地服务器。

我试过了

@EnableAutoConfiguration(exclude={MongoReactiveAutoConfiguration.class})

但随后它也忽略了上述转换。是否有任何其他配置可以覆盖AbstractReactiveMongoConfiguration以忽略默认服务器 IP 和端口?

标签: mongodbspring-bootspring-webfluxmongodb-atlasreactive-mongo-java

解决方案


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

@Configuration
public class MongoAlternativeConfiguration {

    @Bean
    public MongoCustomConversions mongoCustomConversions() {

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

推荐阅读