我正在尝试在春季靴子中配置两个mongos。但是它总是只拾取一个,这是我的代码。
Mongo 1配置
@Configuration
public class MongoOneConfiguration extends AbstractMongoConfiguration {
@Override
@Bean(name = "mongoOneClient")
public MongoClient mongoClient() {
return new MongoClient(new ServerAddress(mongoOnehostname, mongoOnehostport),
new MongoClientOptions.Builder()
.connectTimeout(mongoOneConnTimeoutMillis)
.build());
}
@Override
public String getDatabaseName() {
return mongoOneDatabaseName;
}
@Bean(name = "mongoOneTemplate")
public MongoOperations mongoOperations() {
try {
return mongoTemplate();
} catch (Exception e) {
}
}
}
Mongo 2配置
@Configuration
public class MongoTwoConfiguration extends AbstractMongoConfiguration {
@Override
@Bean(name = "mongoTwoClient")
public MongoClient mongoClient() {
return new MongoClient(new ServerAddress(mongoTwohostname, mongoTwohostport),
new MongoClientOptions.Builder()
.connectTimeout(mongoTwoConnTimeoutMillis)
.build());
}
@Override
public String getDatabaseName() {
return mongoTwoDatabaseName;
}
@Bean(name = "mongoTwoTemplate")
public MongoOperations mongoOperations() {
try {
return mongoTemplate();
} catch (Exception e) {
}
}
}
道1:
@Component
public class MongoOneDao {
@Autowired
@Qualifier("mongoOneTemplate")
private MongoOperations mongoOneTemplate;
public List<Person> getAll() {
return mongoOneTemplate.findAll(Person.class);
}
}
道2:
@Component
public class MongoTwoDao {
@Autowired
@Qualifier("mongoTwoTemplate")
private MongoOperations mongoTwoTemplate;
public List<Person> getAll() {
return mongoTwoTemplate.findAll(Person.class);
}
}
无论我使用
MongoOneDao
还是MongoTwoDao
,它总是调用相同的数据库。你能帮我所缺少的吗?PS:我不想使用存储库。
最佳答案
我认为您应该在配置中创建2个不同的MongoDbFactory实例,并使用不同的工厂来创建不同的MongoTemplates。看看这个Link。它可以帮助
关于java - 在 Spring 启动中没有存储库的多个mongo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62432239/