Wie definiert man die Reihenfolge der Methodenabfangprogramme in Guice?

8

Manchmal ist es notwendig, die Reihenfolge der Methoden-Interzeptoren zu kennen, die einen Methodenaufruf in Guice abfangen. Ein einfaches Beispielszenario wäre die Verwendung des Interacceptors @Transactional für guice-persist mit einem benutzerdefinierten Interceptor @Retry. Der Wiederholungsabfanger muss außerhalb des Transaktionsabfangregisters ausgeführt werden, um sicherzustellen, dass die Wiederholungsversuche nicht innerhalb derselben Transaktion ausgeführt werden.

Im Frühjahr könnten Sie die Ordered-Schnittstelle für den Interceptor verwenden, um sicherzustellen, dass der Transaktionsinterceptor innerhalb des Wiederholungsinterceptors ausgeführt wird. Gibt es einen Weg, das gleiche in Guice zu erreichen?

    
tautonen 29.11.2011, 09:09
quelle

1 Antwort

15

Guice ruft die Interzeptoren in der Reihenfolge auf, in der sie registriert wurden. Also wenn du sie so definierst:

%Vor%

oder

%Vor%

Der retryInterceptor wird vor dem transactionalInterceptor ausgeführt.

Gleiches gilt, wenn Sie mehrere Module haben - die Interzeptoren vom ersten Modul werden vor den Interzeptoren des Sekundenmoduls ausgeführt und so weiter.

    
Geno Roupsky 29.11.2011, 22:18
quelle

Tags und Links