2016-08-03 47 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类。