sql >> Databasteknik >  >> NoSQL >> MongoDB

Spring boot försöker ansluta till mongo när man lägger till mongo-java-driver maven-beroende

Om jag ska svara i en mening så beror det på att Springboot är Opinionated. Den kommer att försöka ansluta till mongo så snart den märker mongo-beroende i din pom genom AutoConfiguration klasser.

Om du vill åsidosätta standardbeteendet och berätta för Springboot att inte göra MongoAutoConfiguration så kan du göra det så här

@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {

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

eller så kan du göra det med den här raden i din egenskapsfil

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

Om du gör något av ovanstående, kommer det att utesluta MongoAutoconfiguration från din applikation (inte bara från dina tester). Vilket innebär att när du startar din ansökan har du inte tillgång till mongo (om det är vad du önskar).

Sedan SpringbootTest annoteringen laddar hela applikationens samtext, den letar efter denna huvudapplikationsklass. Om du har exkluderat några autokonfigurationer kommer det att uteslutas, även i dina tester. Så du skulle inte ha problem med att ansluta till mongo.

Om du endast vill utesluta denna autokonfiguration i tester (så att inget ändras medan du kör din applikation), kan du göra det på detta sätt

@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}



  1. @DBRef hämtar inte data när du använder Spring Data Mongo

  2. Hur använder man sadd med flera element i Redis med Python API?

  3. Mongo aggregeringsramverk:vad är låsnivån för sista stegets $out-operation?

  4. Ta bort dubbletter när du använder $unionWith i MongoDB