У меня есть вопрос о пружинном распространении транзакции. Если я использую @Transactional (распространение = Распространение. ТРЕБУЕМЫЙ) для аннотирования метода m1. Когда логика выполнения вводит m1, если уже будет транзакция, то m1 будет использовать тот. Когда после m1, что относительно транзакции? Это заканчивается, или все еще откройтесь? (если я называю m1 в другом методе, и после вызова, там все еще другие вещи сделать).
Таким образом, я хочу знать при выходе из аннотируемого метода, концов транзакции или все еще открыться?
Большое спасибо.
Propagation.REQUIRED
(документировано здесь) создаст новую транзакцию (если таковой не существует для текущего потока), или присоединится к существующей транзакции (если таковая существует).
При выходе из метода транзакция будет завершена (если вход в метод вызвал создание транзакции), или транзакция останется открытой (если на момент входа в метод транзакция уже существовала). Другими словами, это симметрично, и транзакционное состояние потока останется в том же состоянии, в котором оно было до входа в метод.