Должны ли сервисы @transactional быть синглтоном или прототипом весной? - PullRequest
0 голосов
/ 20 февраля 2020

Будет ли проблема с управлением транзакциями весной, если класс уровня обслуживания будет одноэлементным? Или это должен быть прототип?

1 Ответ

0 голосов
/ 20 февраля 2020

Нет, это не должно быть проблемой. Что делает аннотация @Transactional, так это привязывает жизненный цикл транзакции к текущему потоку. Таким образом, каждый новый поток будет выполняться в отдельной транзакции.

Поэтому, когда ваш метод вызывается, Spring преобразует этот метод в транзакцию, поэтому в однопоточном контексте транзакция запускается и фиксируется, если вызов успешен, и откат (в зависимости от вашей конфигурации), если выдается исключение.

В многопоточном контексте каждый поток будет выполняться в отдельной транзакции.

...