2017-12-08 1 views
1

Ich mag meinen ServiceActivator mit Transactional mit Anmerkungen versehen, wie unten:Spring-Integration: Ist es möglich, eine Transaktion in einer ServiceActivator-Methode zu implementieren?

@ServiceActivator 
@Transactional(rollbackFor = Exception.class) 
public Message<MyResult> populate(List<Things> th) { 

// inserting in database 

// try { throwing an exception } catch... 

//doing other stuffs (insersions) 

} 

Ich erwarte, dass die insersions rückgängig zu machen, nachdem eine Ausnahme zu werfen.

Leider funktioniert es nicht, ich habe die Einträge in der Datenbank.

Vielen Dank im Voraus.

+0

Ja, es sollte funktionieren; Hast du @ @ EnableTransactions zu einer '@ Configuration' Klasse hinzugefügt? –

+0

Die Transaktion wird zurückgesetzt, wenn Sie dies explizit tun oder eine Ausnahme von der Methode auslösen. Zeigen Sie den Code Ihrer Methode an. Irgendwie sehe ich da 'catch' ... –

+0

@ArtemBilan der Fang nur die Ausnahmemeldung protokollieren, die in meinem Fall ist:" Glück der Information " – Belham

Antwort

1

Nur um dieses Thema zu schließen, gebe ich die Antwort hier. Auch wenn es aussieht, als würde es von Gary Russell entführt. Obwohl wir aus dem gleichen Team sind.

So muss die @Transactional wie viele andere Aspekte im Frühjahr aktiviert sein. Zu diesem Zweck gibt es eine spezielle @Enable... Annotation - @EnableTransactionManagement. Dieser sucht nach der PlatformTransactionManager Bean und wendet AOP Advices auf die mit der @Transactional gekennzeichneten Methoden an.

Weitere Informationen finden Sie unter Reference Manual.

Verwandte Themen