Heim >Java >javaLernprogramm >Warum funktioniert @Transactional nicht mit privaten Spring Bean-Methoden?

Warum funktioniert @Transactional nicht mit privaten Spring Bean-Methoden?

Barbara Streisand
Barbara StreisandOriginal
2024-12-17 12:26:26226Durchsuche

Why Doesn't @Transactional Work on Private Spring Bean Methods?

Spring @Transactional-Annotation auf private Methoden

Wenn eine @Transactional-Annotation auf eine private Methode in einer Spring-Bean angewendet wird, wird dies nicht der Fall sein irgendeine Wirkung haben. Dies liegt daran, dass der Proxy-Generator, der für die Erstellung von Proxys für Spring Beans verantwortlich ist, beim Generieren des Proxys private Methoden ignoriert.

Betrachten Sie beispielsweise das folgende Spring Bean:

public class Bean {
    public void doStuff() {
        doPrivateStuff();
    }

    @Transactional
    private void doPrivateStuff() {

    }
}

Wann Nachdem der Anwendungskontext erstellt wurde, wird ein Proxy für die Bean-Klasse erstellt. Allerdings wird die @Transactional-Annotation für die doPrivateStuff-Methode ignoriert und die Methode zeigt nicht die konfigurierten Transaktionseinstellungen an.

Dieses Verhalten ist im Spring Manual Kapitel 10.5.6 dokumentiert:

When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate protected, private or package-visible methods with the @Transactional annotation, no error is raised, but the annotated method does not exhibit the configured transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods.

Das obige ist der detaillierte Inhalt vonWarum funktioniert @Transactional nicht mit privaten Spring Bean-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn