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中创建的。
该项目是否有弹簧启动?你确定你的'MongoConfig'被执行了吗?因为'MongoTemplate'似乎是通过spring启动实际自动配置的。 – Roman
是的,我使用弹簧引导。我已经追踪到,它似乎是由@ SpringBootApplication注释引起的。但是,如果我删除这个,我的整个应用程序不再开始了。我目前正在寻找解决方法或一些指针如何管理这一点 – lunatikz