带有反应式 mongodb 的 Spring Boot 不断尝试连接到本地主机

时间:2021-06-24 18:32:28

标签: mongodb spring-boot docker spring-webflux

我有一个响应式 Spring Boot API/MongoDB,我想对其进行 dockerize,但是 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 个答案:

答案 0 :(得分:0)

找到解决方案:

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

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