I am trying to configure two mongos in my spring boot. But it always picks up only one here is my code.
Mongo 1 configuration
@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
@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) {
}
}
}
Dao 1:
@Component
public class MongoOneDao {
@Autowired
@Qualifier("mongoOneTemplate")
private MongoOperations mongoOneTemplate;
public List<Person> getAll() {
return mongoOneTemplate.findAll(Person.class);
}
}
Dao 2:
@Component
public class MongoTwoDao {
@Autowired
@Qualifier("mongoTwoTemplate")
private MongoOperations mongoTwoTemplate;
public List<Person> getAll() {
return mongoTwoTemplate.findAll(Person.class);
}
}
Whichever Dao I use MongoOneDao
or MongoTwoDao
, it always calls same database. Can you please help what I am missing.
PS: I dont want to use repositories.