Мне нужно реализовать приложение Spring boot — MongoDb, в котором есть 2 базы данных mongo с одинаковыми именами и коллекциями базы данных. В зависимости от того, как пользователь делает запрос, мне нужно выбрать, следует ли извлекать данные из DB1 или DB2 (разница только в хосте mongo URI - IP).
Например. Мне нужно каким-то образом создать 2 mongoTemplates, таких как mTempA и mTempB, в моем репозитории и на основе некоторого условия использовать любой из шаблонов для выполнения запроса, как показано ниже:
@Repository
public class MyCustomRepository {
private Logger logger = LoggerFactory.getLogger(MyCustomRepository.class);
@Autowired
private MongoTemplateA mongoTemplateA;// Need to know if this is possible & how
@Autowired
private MongoTemplateB mongoTemplateB;// Need to know if this is possible & how
public List<MyModel> findByCriteria(MyRequest request) {
List<MyModel> result;
//Query query = <build query based on request>
if (request.getUserType().equals("A")) {
result = mongoTemplateA.find(query, MyModel.class);
} else {
result = mongoTemplateB.find(query, MyModel.class);
}
logger.debug("Result fetched with {} records", result.size());
return result;
}
}
Я не хочу использовать 2 отдельных репо (класс или интерфейс) или разные модели. Просто хочу, чтобы 2 разных mongoTemplates были введены в одно репо.
Это возможно? Если да, то приведите пример кода. Я следовал приведенному ниже руководству: https://dzone.com/articles/multiple-mongodb-connectors-with-spring-boot