Sobes.tech
Middle

Чӣ гуна занҷири даъвати усули ҷамъиятӣ, ки бо @Transactional нишонагузорӣ шудааст, дар дохили он усули хусусӣ бо @Transactional ва параметри REQUIRES_NEW даъват карда мешавад, таъсир мерасонад?

sobes.tech AI

Ҷавоб аз AI

В Spring аннотация @Transactional работает через прокси, которые перехватывают вызовы методов. При вызове публичного метода, помеченного @Transactional, транзакция будет создана или использована в зависимости от настроек.

Однако, если внутри этого метода вызывается приватный метод с @Transactional(propagation = REQUIRES_NEW), то аннотация на приватном методе не сработает, потому что вызов происходит внутри того же класса напрямую, без прохождения через прокси.

Таким образом, параметр REQUIRES_NEW на приватном методе не создаст новую транзакцию, а весь код будет выполняться в рамках одной транзакции, открытой для публичного метода.

Если нужно, чтобы REQUIRES_NEW сработал, приватный метод должен быть вызван через прокси, например, из другого бина или через self-injection.