Вопрос проверяет понимание того, как Spring применяет AOP и почему транзакции не всегда работают так, как ожидается.
Короткий ответ
@Transactional в Spring работает через прокси. При self-invocation метод вызывается внутри того же объекта, минуя прокси. В результате транзакция не создаётся и аннотация игнорируется. Это ограничение прокси-механизма Spring. Для корректной работы нужен вызов через прокси.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.