У меня есть проект REST API, который использует несколько бэкэндов (упакованных в разные банки). Я использую @ConditionalOnProperty в классах конфигурации Java, чтобы определить, какой сервер будет настроен. Допустим, есть бэкэнд с реляционной базой данных и jar MongoDB Spring Data. Если проект развернут в среде с базой данных mysql, следует использовать первый бэкэнд. Проект должен быть предварительно собран, и перед развертыванием будет изменено только свойство в файле application.properties.
Есть ли способ условно автоматически связать соответствующие репозитории? Например, в классе Spring Service у меня будет что-то вроде:
@Service
public class MyService {
@Autowired
private UserMySqlRepository repo1;
@Autowired
private UserMongoDBRepository repo2;
}
UserMySqlRepository расширит JpaRepository, а UserMongoDBRepository расширит MongoDbRepository. Можно ли аннотировать эти поля с помощью @Conditional и автоматически связывать их только при использовании соответствующей конфигурации? Если нет, то какой лучший способ сделать это?