我正在尝试在春季靴中配置两个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:我不想使用存储库。
答案 0 :(得分:0)
我认为您应该在配置中创建2个不同的MongoDbFactory实例,并使用不同的工厂来创建不同的MongoTemplates。请看一下Link。可能有帮助
答案 1 :(得分:0)
@Configuration
public class MongoOneConfiguration {
@Bean
public MongoClient mongoOneClient() {
return new MongoClient("localhost");
}
@Bean
public MongoTemplate mongoOneTemplate() throws Exception {
return new MongoTemplate(mongoOneClient(), "db1");
}
}
@Configuration
public class MongoTwoConfiguration {
public MongoClient mongoTwoClient() {
return new MongoClient("localhost");
}
@Bean
public MongoTemplate mongoTwoTemplate() throws Exception {
return new MongoTemplate(mongoTwoClient(), "db2");
}
}
用不同的数据库定义两个不同的mongo模板,它应该可以工作。