2017-06-11 9 views
0

Ich versuche, MongoDB als Persistenzspeicher mit meiner Spring Boot-basierten Webanwendung zu verwenden. Ich habe alle mongoDB Konfiguration in einer MongoConfig.java Klasse geschrieben. Spring scheint jedoch nicht die Konfiguration aus dieser Klasse zu lesen.Spring Boot liest keine MongoDB-Konfiguration aus der Java-Klasse

Hier ist MongoConfig.java

@Configuration 
@EnableMongoRepositories 
public class MongoConfig { 

    @Bean 
    public MongoClientFactoryBean mongoClientBean() { 
     MongoClientFactoryBean mongoClientFactory = new MongoClientFactoryBean(); 
     mongoClientFactory.setHost("X.X.X.X"); 
     return mongoClientFactory; 
    } 


    @Bean 
    public MongoOperations mongoTemplate(Mongo mongo) { 
     return new MongoTemplate(mongo, "TestDB"); 
    } 
} 

Das ist mein Application.java

@SpringBootApplication 
@Import(MongoConfig.class) 
public class Application { 

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

ich habe, ist MongoRepository im gleichen Paket und alles funktioniert einwandfrei, wenn ich meine Konfiguration einfach in application.properties setzen. Wenn ich jedoch application.properties entferne, liest Spring die mongoDB-Konfiguration nicht aus der Klasse MongoConfig. Stattdessen wird versucht, eine Verbindung mit der Standard-MongoDB auf localhost herzustellen.

Wie kann ich Frühling lesen diese Konfiguration von MongoConfig.java Klasse machen?

Antwort

0

Sie müssen die richtigen Beans überschreiben, damit alles mit java config funktioniert.

Spring Boot hinter den Kulissen verwendet zwei automatische Konfigurationen, MongoAutoConfiguration und MongoDataAutoConfiguration, um die MongoDB-Konfiguration einzurichten.

So auf einen anderen Host zu verbinden, müssen Sie die richtigen MongoClient und MongoDbFactory Bohnen erstellen und von hier Frühjahr sollte diese Bohnen verwenden, um den Rest der Konfiguration, Dinge wie MongoTemplate, MongoRepository usw.

zu erstellen Verwenden Sie @Primary, um Frühling anzuweisen, wählen Sie Ihre Bohnen über automatisch konfigurierten Bohnen.

@[email protected] 
public MongoClient mongo() throws UnknownHostException { 
    return new MongoClient(host); 
} 

@[email protected] 
public MongoDbFactory getMongoDbFactory() throws Exception { 
    return new SimpleMongoDbFactory(mongo(), dbname); 
} 
Verwandte Themen