Spring MVC, comment obtenir de l'avancement de l'exécution asynchrone de la tâche
Je voudrais commencer une tâche asynchrone de l'intérieur contrôleur comme dans le code suivant sniplet de Printemps docs.
import org.springframework.core.task.TaskExecutor;
public class TaskExecutorExample {
private class MessagePrinterTask implements Runnable {
private int cn;
public MessagePrinterTask() {
}
public void run() {
//dummy code
for (int i = 0; i < 10; i++) {
cn = i;
}
}
}
private TaskExecutor taskExecutor;
public TaskExecutorExample(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void printMessages() {
taskExecutor.execute(new MessagePrinterTask());
}
}
par la suite dans annother demande (dans le cas où la tâche est en cours d'exécution) j'ai besoin de vérifier l'état d'avancement de la tâche. Fondamentalement obtenir la valeur de cn.
Quelle serait la meilleure approche dans Spring MVC, une façon d'éviter les problèmes de synchronisation.
Grâce
Pepa Procházka
OriginalL'auteur Josef Procházka | 2012-06-05
Vous devez vous connecter pour publier un commentaire.
Avez-vous regardé le
@Async
annotation dans le Printemps de référence doc?Tout d'abord, créer un bean pour votre tâche asynchrone:
Prochain, l'appeler à partir du contrôleur:
N'oubliez pas de configurer un exécuteur testamentaire, en conséquence, par exemple
"Le printemps est si fine, si vous maintenant comment l'utiliser" - tout à fait vrai.
J'ai une question: Est-il possible d'injecter les dépendances du Service? Comment?
Certainement, vous pouvez utiliser
@Autowired
,@Inject
, ou de tout autre Ressort DI méthode que vous utilisez normalement.Où myExecutor est-il utilisé?
OriginalL'auteur matsev
Une solution pourrait être: dans votre async fil, écrire à un DB, et vous avez votre code de vérification vérification de la table DB pour le progrès. Vous obtenez également l'avantage supplémentaire de la persistance de la performance des données pour une évaluation ultérieure.
Aussi, il suffit d'utiliser la
@Async
annotation pour lancer le thread asynchrone - rend la vie plus facile et est un Printemps Façon De le Faire.OriginalL'auteur atrain
En ignorant les problèmes de synchronisation que vous pourriez faire quelque chose comme ceci:
OriginalL'auteur Eugene Kuleshov