Frühjahr 3: So rufen Sie annotierte Methoden von @Async aus dem TaskExecutor auf

9

Ich bin neu in der asynchronen Aufgabenausführung im Frühjahr, also bitte verzeih mir, wenn das wie eine dumme Frage klingt.

Ich habe gelesen, dass die Async-Annotation ab Spring 3.x auf Methodenebene eingeführt wird, damit der Aufruf dieser Methode asynchron erfolgt. Ich lese auch, dass wir den ThreadPoolTaskExecutor in der Spring-Konfigurationsdatei konfigurieren können.

Was ich nicht verstehen kann, ist, dass das Angeben einer @ Async-Annotationsmethode von einem Tak-Executor annehmen lässt - AsyncTaskExecutor

Früher haben wir etwas in einer Klasse gemacht:

%Vor%

Und dann

%Vor%

Ich bin nicht in der Lage, die Beziehung zwischen annotierten Methoden @ Async und TaskExecutor zu verstehen.

Ich habe versucht, viel über das Internet zu suchen, konnte aber nichts dazu finden.

Kann jemand dafür ein Beispiel geben?

    
tarares 19.07.2013, 12:44
quelle

4 Antworten

29

Hier ist ein Beispiel für @Async use:

%Vor%

Rufen Sie diese Methode jetzt von einer anderen Klasse auf, und sie wird asynchron ausgeführt. Wenn Sie einen Rückgabewert wünschen, verwenden Sie Future

%Vor%

Die Beziehung zwischen @Async und TaskExecutor besteht darin, dass @Async ein TaskExecutor hinter den Kulissen verwendet. Aus der Dokumentation:

  

Wenn Sie @Async für eine Methode angeben, wird standardmäßig der Executor verwendet, der wie oben beschrieben an das Element "annotation-driven" übergeben wird. Das Wertattribut der @ Async-Annotation kann jedoch verwendet werden, wenn angegeben werden muss, dass beim Ausführen einer bestimmten Methode ein anderer Executor als der Standard verwendet werden soll.

Um einen Standard-Executor zu erstellen, fügen Sie diesen zu Ihrer Spring-Konfiguration hinzu

%Vor%

Oder um einen bestimmten Executor für eine einmalige Verwendung zu verwenden, versuchen Sie

%Vor%

Siehe Ссылка

    
Planky 02.10.2013 18:39
quelle
1

In der Konfigurationsdatei sollte eine anmerkungsgesteuerte Task mit dem Namen des Threadpools erwähnt werden, und die Methode mit @Async (Poolname) wird als Teil dieses Pools ausgeführt. Dies erstellt eine Proxy-Klasse für die mit @ Async Annotation und führt sie für jeden Thread aus.

    
user3631644 14.05.2014 04:43
quelle
1

Vollständiges Beispiel

  1. Konfigurationsfrühling

    %Vor%
  2. Executor-Klasse erstellt, Executor Ich habe erstellt, dass Frühling kümmert sich Thread-Management.

    %Vor%
  3. Erstellen Sie einen Manager.

    %Vor%
  4. Konfigurieren Sie Ihre Serviceklasse.

    %Vor%
  5. Modell.

    %Vor%
  6. Test zum Ausführen

    %Vor%
Kumar Abhishek 19.05.2017 10:34
quelle
0

Sie können @Async zu Ihrer Methode und dem folgenden zu Ihrem Anwendungskontext hinzufügen.

%Vor%     
Lijo Monkuzhy 27.04.2015 22:34
quelle