2016-08-03 67 views
0

我目前正在MongoDB和春季潛水。 雖然配置了另一個數據庫,但它仍嘗試從錯誤的數據庫創建/讀取。不能配置正確的mongo db名稱在春天

這裏是我的代碼:

@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"); 
    } 
} 

處理程序:

@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"); 
    } 
} 

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 

正如你所看到的,蒙戈對象是指測試.user,但是爲什麼? 是否需要更多配置? db測試也是在spring中創建的。

+0

該項目是否有彈簧啓動?你確定你的'MongoConfig'被執行了嗎?因爲'MongoTemplate'似乎是通過spring啓動實際自動配置的。 – Roman

+0

是的,我使用彈簧引導。我已經追蹤到,它似乎是由@ SpringBootApplication註釋引起的。但是,如果我刪除這個,我的整個應用程序不再開始了。我目前正在尋找解決方法或一些指針如何管理這一點 – lunatikz

回答

1

由於您使用的春天開機,你可以用它auto-configuration capabilities - 以下行添加到application.properties文件:

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

,並刪除所有MongoConfig類。