MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Spring Boot versucht, eine Verbindung zu Mongo herzustellen, wenn die Mongo-Java-Treiber-Maven-Abhängigkeit hinzugefügt wird

Wenn ich in einem Satz antworten muss, liegt das daran, dass Springboot Opinionated ist. Es wird versuchen, sich mit Mongo zu verbinden, sobald es die Mongo-Abhängigkeit in Ihrem Pom durch AutoConfiguration bemerkt Klassen.

Wenn Sie das Standardverhalten überschreiben und Springboot mitteilen möchten, MongoAutoConfiguration nicht durchzuführen, können Sie dies auf diese Weise tun

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

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

oder Sie können es mit dieser Zeile in Ihrer Eigenschaftendatei

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

Wenn Sie einen der oben genannten Schritte ausführen, wird MongoAutoconfiguration von Ihrer Anwendung ausgeschlossen (nicht nur von Ihren Tests). Das bedeutet, wenn Sie Ihre Anwendung starten, haben Sie keinen Zugriff auf Mongo (falls Sie dies wünschen).

Seit SpringbootTest Die Annotation lädt den gesamten Anwendungskotext, sie sucht nach dieser Hauptanwendungsklasse. Wenn Sie einige Autokonfigurationen ausgeschlossen haben, werden diese auch in Ihren Tests ausgeschlossen. Sie hätten also kein Problem mit der Verbindung zu Mongo.

Wenn Sie diese Autokonfiguration nur in Tests ausschließen möchten (damit beim Ausführen Ihrer Anwendung nichts geändert wird), können Sie dies auf diese Weise tun

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