2012-10-13 6 views
6

Ich bin neu im Frühling, mit der Kenntnis des Winterschlafs. Meine Aufgabe war es, die Transaktion mit dem Frühling deklarativen Ansatz zu implementieren. Und erfolgreich habe ich mit Hilfe von Google, dank Google. Aber ich bin nicht in der Lage, die in application-context.xml verwendeten Begriffe klar zu verstehen.Unterschied zwischen Feder tx: Beratung und Feder aop pointcut

1.

<tx-advice> 

</tx-advice> 
  1. <aop-config> 
        // here is point cut were declared 
    </aop-config> 
    

kann mir jemand erklären, etwa über Punkt, der Zwischenzeit versuche ich es aus dem Google auch zu verstehen.

Antwort

23

Wie Sie bereits erfolgreich spring transaction implementiert,

In Spring wir Transaktion auf drei Arten implementieren:

  1. Platform Transaction Management.
  2. Declarative Transaktionsverwaltung.
  3. 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

+0

Was bedeutet das pointcut-ref? – luksmir

+0

Wie erzwinge ich die Transaktion zu schließen –

+1

@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

2

Das <tx:advice>-Tag ist spezifisch für die Transaction Management Konfiguration, während das <aop:config>-Tag verwendet werden kann, um Aspect-Oriented Programming im Allgemeinen zu tun.

AOP kann für viel mehr Dinge als Transaktionen, zum Beispiel Protokollierung oder Zugangskontrolle verwendet werden. Außerdem muss das Transaktionsmanagement nicht notwendigerweise mit AOP implementiert werden, es ist einfach so, wie es normalerweise in Spring gemacht wird (aber Spring unterstützt auch Programmatic Transaction Management).

Verwandte Themen