Frühling Transaktion ist
@Transactional(propagation = Propagation.REQUIRED)
So brauchen Sie nicht über die Ausbreitungseigenschaft angeben.
Also, Was bedeutet es von @Transactional
Annotation für eine Federkomponente?
Spring-Framework wird eine neue Transaktion starten und führt alle Verfahren und schließlich die Transaktion begehen.
Wenn jedoch in der application context
keine Transaktion vorhanden ist, startet der Spring Container eine neue Transaktion.
- Wenn mehr als eine Methode als
Propagation.REQUIRED
konfiguriert ist, dann wird das Transaktionsverhalten verschachtelt für jede Methode logisch zugeordnet, aber alle befinden sich unter derselben physischen Transaktion.
Also, was ist das Ergebnis?
Das Ergebnis ist, wenn eine verschachtelte Transaktion fehlschlägt, dann wird die gesamte Transaktion fehlschlagen und zurückrollen (fügen Sie keinen Wert in db), anstatt zu committen.
Beispiel:
@Service
public class ServiceA{
@Transactional(propagation = Propagation.REQUIRED)
public void foo(){
fooB();
}
@Transactional(propagation = Propagation.REQUIRED)
public void fooB(){
//some operation
}
}
Erläuterung: In diesem Beispiel foo()
Verfahren zur Herstellung einer Transaktionsverhalten zugeordnet und innen foo()
anderen Methode fooB()
genannt, die auch transaktional ist. Hier agieren die fooB()
als verschachtelte Transaktion in Bezug auf foo()
. Wenn fooB()
aus irgendeinem Grund fehlschlägt, ist auch foo()
fehlgeschlagen zu committen. Eher rollt es zurück.