带有反应式 mongodb 的 Spring Boot 不断尝试连接到 localhost

Posted

技术标签:

【中文标题】带有反应式 mongodb 的 Spring Boot 不断尝试连接到 localhost【英文标题】:Spring boot with a reactive mongodb keeps trying to connect to localhost 【发布时间】:2021-09-08 06:18:31 【问题描述】:

我有一个反应式 Spring Boot API/MongoDB,我想对其进行 docker 化,但 Spring-boot 应用程序不断尝试连接到 localhost:21017 上的 mongoDB。这显然给了我一个拒绝回复的连接。

我尝试的所有选项,例如排除自动配置类,覆盖 reactiveMongoTemplate,似乎没有任何效果。我很想听听一些建议

我的 docker-compose:

version: "3.7"
services:
  api_service:
    build: .
    restart: always
    hostname: spring
    ports:
      - 8080:8080
    container_name: "review-service"
    depends_on:
      - mongo
  mongo:
    image: "mongo:latest"
    hostname: mongo
    restart: always
    container_name: mongo_review
    ports:
      - 27017:27017

应用程序属性

spring.data.mongodb.host=mongo
spring.data.mongodb.database=test
spring.data.mongodb.port=27017

应用程序类

@SpringBootApplication(exclude=MongoReactiveAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class)
@EnableReactiveMongoRepositories
public class ConferenceAppReviewReactiveApplication extends AbstractReactiveMongoConfiguration implements CommandLineRunner  
    @Autowired
    private ReviewService reviewService;

    public static void main(String[] args) 
        SpringApplication.run(ConferenceAppReviewReactiveApplication.class, args);
    

    @Override
    public void run(String... args) throws Exception 
        Review review = new Review();
        review.setRev_referenceId("60d093a31ee645007b2df2cb");
        reviewService.save(review);
    
    @Bean
    public MongoClient mongoClient() 
        return MongoClients.create();
    
    @Override
    protected String getDatabaseName() 
        return "test";
    

    @Override
    public MongoClient reactiveMongoClient() 
        return MongoClients.create("mongodb://mongo:27017/test");
    

【问题讨论】:

【参考方案1】:

找到解决方案:

删除所有配置(扩展 AbstractReactiveMongoConfiguration) 删除所有排除项

显然@EnableReactiveMongoRepositories 就足够了,剩下的交给Spring来做

【讨论】:

以上是关于带有反应式 mongodb 的 Spring Boot 不断尝试连接到 localhost的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data (数据)MongoDB

带有 MongoDB 和事务的 Spring 批处理

找不到带有 Spring Security 5.3.2 ReactiveClientRegistrationRepository bean 的反应式 OAuth2

带有嵌入式 Tomcat 的 Jndi Mongodb Spring Boot,[重复]

在带有 MongoDB 的 Spring Boot M7 中找不到 ReflectKotlinClass

带有 java.util.Date 字段的 MongoDB 文档的 Spring 乐观锁