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.
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
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