Junior — Middle
87
Šta će se desiti sa transakcijama u Spring-u ako unutar metode, koja nije označena kao transakcionalna, pozovete metod sa transakcionim podešavanjima?
Одговор од АИ
sobes.tech АИ
Если метод, не помеченный как транзакционный, вызывает метод с аннотацией @Transactional, то по умолчанию транзакция будет создана и применена к вызываемому методу. Spring откроет новую транзакцию при входе в транзакционный метод и закроет её при выходе.
Однако важно помнить, что если вызов транзакционного метода происходит внутри того же класса через внутренний вызов (this.method()), то прокси Spring не сработает, и транзакция не будет применена.
Пример:
@Service
public class MyService {
public void nonTransactionalMethod() {
transactionalMethod(); // Внутренний вызов, @Transactional может не сработать
}
@Transactional
public void transactionalMethod() {
// Здесь должна быть транзакция
}
}
В таком случае транзакция не будет создана. Чтобы транзакция сработала, вызов должен идти извне через прокси Spring.