@Transactional оборачивает метод в транзакцию базы данных: Spring открывает её перед выполнением метода и коммитит при нормальном возврате — или делает rollback, если метод бросает исключение. Под капотом это AOP-прокси, что является источником большинства подводных камней.
Базовое использование
{
{
accounts.debit(from, amount);
accounts.credit(to, amount);
}
}
