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

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

Barbara Streisand
Freigeben: 2024-12-17 12:26:26
Original
223 Leute haben es durchsucht

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() {

    }
}
Nach dem Login kopieren

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.
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage