Spring @ Async-Methode in einem Service

8

Ich habe diese Service-Bean mit einer Synchronisationsmethode, die eine interne asynchrone Methode aufruft:

%Vor%

Das Problem ist, dass der asyncJob nicht wirklich asynchron aufgerufen wird. Ich habe festgestellt, dass dies nicht funktioniert, da bei einem internen Anruf der AOP-Proxy übersprungen wird.

Also versuche ich selbst die Bean zu verweisen:

%Vor%

Es schlägt fehl . Wieder kein Async-Anruf.

Also habe ich versucht, es in zwei Beans zu teilen:

%Vor%

Fällt erneut aus .

Der einzige funktionierende Weg ist es von einer Controller Bean aus aufzurufen:

%Vor%

Aber in diesem Fall ist es ein Servicejob ... warum kann ich ihn nicht von einem Service aus anrufen?

    
Tobia 17.07.2014, 08:39
quelle

2 Antworten

3

Ich löste die dritte Methode (teile sie in zwei Beans), indem ich den Modifizierer für die Async-Methode auf public

umschalte %Vor%     
Tobia 17.07.2014, 09:37
quelle
12

Ich habe einen wirklich guten Weg gefunden, dies zu lösen (mit java8), wenn Sie viele verschiedene Dinge haben, die Sie sowohl synchronisieren als auch asynchron machen möchten. Erstellen Sie einen generischen asynchronen Dienstwrapper, anstatt einen separaten XXXAsync -Dienst für jeden "synchronen" Dienst zu erstellen:

%Vor%

und dann verwenden Sie es als solches:

%Vor%     
jlb 14.10.2016 13:52
quelle