Я использую релиз Spring Boot 2.1.2 (mongodb-driver v 3.8.2) и разрабатываю веб-приложение, которое работает с mongodb. Мое приложение совместимо с версией mongodb 3.4 (эта версия не поддерживает транзакции), и сейчас я внедряю транзакционный механизм. Я аннотирую свой метод обслуживания с помощью транзакционной аннотации
@Transactional
public void process(Object argument) {
...
...
...
}
и он отлично работает для mongodb v 4, все работает просто так, как ожидалось - откат неудачных транзакций.
Но когда я запускаю свое приложение с mongodb v 3.4, мое приложение вылетает с
Sessions are not supported by the MongoDB cluster to which this client is connected
исключение.
Проблема в том, что мое приложение должно поддерживать оба случая: транзакционный и нетранзакционный с одним и тем же кодом (для обеих версий mongodb). Вот интересно, как я могу это сделать? Похоже, что мое приложение должно создавать сессию только для конкретной версии Монго, то есть эта аннотация должна обрабатываться только для этого случая.
Как я могу это сделать?