我正在查找如何根据登录的用户动态连接到不同的mongo db。我看到多个帖子谈论它但是因为我刚接触到这个只是想要了解有关如何实施它的更多信息。在创建用户帐户的应用程序中,我们可以根据userName创建不同的db文件,userName充当密钥。 所以我们知道要连接哪个数据库所以我只想选择正确的工厂。 我在模板代码中看到了以下构造函数。
public MongoTemplate(Mongo mongo, String databaseName) {
this(new SimpleMongoDbFactory(mongo, databaseName), null);
}
我当前的Spring java配置如下
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
UserCredentials userCredentials =
new UserCredentials(
env.getRequiredProperty(databasePropertyNames.getDBUsernamePropertyName()),
env.getRequiredProperty(databasePropertyNames.getDBPasswordPropertyName()));
return new SimpleMongoDbFactory(mongo().getObject(),
env.getRequiredProperty(databasePropertyNames.getDBNamePropertyName()),
userCredentials);
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), mappingMongoConverter());
mongoTemplate.setWriteConcern(WriteConcern.SAFE);
return mongoTemplate;
}
Questions:-
1.Will there be multiple SimpleMongoDbFactory objects that I need to create based on the user that logged in?
If yes then how do I do it and do I need to maintain that object Map?
2. How would I do set those in mongoTemplate at runtime?
非常感谢您的帮助:)
答案 0 :(得分:0)
以下帖子对我来说效果很好
github.com/Loki-Afro/multi-tenant-spring-mongodb
Spring-data-mongodb connect to multiple databases in one Mongo instance
除此之外,必须更新Mongo实例以允许来自默认数据库的用户能够写入任何其他数据库