2016-08-03 20 views
0

Ich bin zur Zeit tauchen in MongoDB und Spring. Obwohl eine andere Datenbank konfiguriert ist, versucht sie immer noch, von der falschen Datenbank zu erstellen/lesen.cant config korrekt mongo db name im frühjahr

Hier ist mein Code:

@Configuration 
@EnableMongoRepositories 
public class MongoConfig { 

    @Bean 
    public MongoClientFactoryBean mongo() { 
    MongoClientFactoryBean mongo = new MongoClientFactoryBean(); 
    mongo.setHost("localhost"); 
    return mongo; 
    } 

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

Handler:

@Component 
public class SomeHandler { 
    private static final Logger log = Logger.getLogger(SomeHandler.class); 
    private MongoOperations mongo; 


    @Autowired 
    public SomeHandler(MongoOperations mongo) { 
     this.mongo = mongo; 
    } 

    public void registerNewUser(User user, Credential credential) {  
    log.info(mongo.getCollectionNames()); 

    mongo.save(user,"user"); 
    mongo.save(credential,"credential"); 

    log.info("count: "+mongo.getCollection("user").count()); 
    log.info("content: "+mongo.getCollection("user").find()); 
    log.info("stored new user in database"); 
    } 
} 

die Ausgabe von log.info():

2016-08-03 14:46:13 INFO SomeHandler:29 - count: 1 
2016-08-03 14:46:13 INFO SomeHandler:30 - content: Cursor id=0, ns=test.user, query={ }, numIterated=0, readPreference=primary 

Wie Sie sehen können, Mongo Objekt zu testen, bezieht sich .user, aber warum? Ist mehr Konfiguration erforderlich? Der db test wird ebenfalls im Frühjahr erstellt.

+0

Haben Sie Springboot in diesem Projekt? Sind Sie sicher, dass Ihre MongoConfig ausgeführt wird? Es scheint so, als ob "MongoTemplate" tatsächlich per Spring Boot automatisch konfiguriert wird. – Roman

+0

yep, ich benutze Spring Boot. Ich habe bereits festgestellt, dass es anscheinend durch '@ SpringBootApplication' Annotation verursacht wird. Aber wenn ich das entferne, fängt meine ganze Anwendung nicht mehr an. Ich suche zurzeit nach einer Problemumgehung oder einigen Zeigern, wie man das verwaltet – lunatikz

Antwort

1

Da Sie Feder Boot verwenden, können Sie nur verwenden, seine auto-configuration capabilities - fügen Sie die folgende Zeile in der Datei application.properties:

spring.data.mongodb.uri=mongodb://localhost/gabble 

und entfernen Sie die MongoConfig Klasse vollständig.