2016-08-03 6 views
0

現在MongoDBとSpringでダイビング中です。 別のデータベースが構成されていますが、依然として間違ったデータベースを作成または読み取ろうとします。cant configはバネで正しい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テストは、春までにも作成されます。

+0

あなたはそのプロジェクトで春の靴を持っていますか? 'MongoConfig'が実行されていますか? 'MongoTemplate'は実際にはスプリングブートによって自動構成されているようです。 – Roman

+0

ええ、私は春のブートを使用しています。私はすでに、@ SpringBootApplicationアノテーションによって引き起こされているように見えます。しかし、これを削除すると、私のアプリケーション全体はもう始まっていません。私は現在回避策やいくつかのポインタを探して、これを管理する方法 – lunatikz

答えて

1

あなたは春のブートを使用しているので、あなただけのauto-configuration capabilitiesを使用することができます - application.propertiesファイルに次の行を追加します。

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

と全くMongoConfigクラスを削除します。