Wie Sie bereits erfolgreich spring transaction
implementiert,
In Spring
wir Transaktion auf drei Arten implementieren:
- Platform Transaction Management.
- Declarative Transaktionsverwaltung.
- Programmatic Transaktionsverwaltung.
Was Sie deklarative Transaktionsmanagement über XML genannt umgesetzt wird.
Kurz gesagt, haben Sie die Implementierung von transaction
von Spring AOP Feature.
Das Koppeln der Konfiguration mit einer XML-basierten AOP-Konfiguration sorgt für eine synergistische Kombination. Zum Beispiel können wir Methodennamen verwenden, um automatisch herauszufinden, welche Art von Transaktion wir auf diese Methode anwenden wollen.
Sagen wir die Transaktion für alle, die Methoden anwenden möchten, die mit save
und modify
wie savePizza()
starten, saveColdDrink()
, modifyOrder()
, modifyBill()
. Für diese müssen wir die advice
in unserer XML-Datei definieren:
<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
Unser Rat ist bereit, wie wir durch die Verwendung über die Linie gesagt, dass wir nur Transaktionen über die Methoden wollen die mit save
oder modify
starten. Nun werden wir sagen, welche Bohnen den obigen Rat benötigen, indem wir pointcut
Element von aop-config
verwenden.Nehmen wir zum Beispiel an, wir möchten den Transaktionshinweis auf alle Klassen anwenden, die im Paket com.mytransaction.service
verfügbar sind.
Dafür haben wir die folgende Zeile in unserer XML-Datei hinzuzufügen:
<aop:config>
<aop:pointcut id="allServices"
expression="execution(*com.mytransaction.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
</aop:config>
In kurzen, <tx:advice>
bedeuten, was zu tun oder welches Verhalten von Transaktion wollen wir anwenden. pointcut
Element innerhalb <aop-config>
sagt, wo wir die Transaktion anwenden möchten, <aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
sagen
Was bedeutet das pointcut-ref? – luksmir
Wie erzwinge ich die Transaktion zu schließen –
@Betlista - Was ist die Notwendigkeit von "TX: Methode". Warum kann es nicht über Pointcut-Ausdruck erreicht werden? Nehmen wir an, in diesem Beispiel kann ich pointcut definieren, um alle Methoden zu vergleichen, die mit "save" und "modify" beginnen. Wird das nicht ausreichen? – user001