@Async ne fonctionne pas pour moi
Je suis à l'aide de @Prévue et il travaille très bien, mais ne peut pas obtenir l' @Asynchrone de travail. Je l'ai testé plusieurs fois, et il semble que c'est faire ma méthode asynchrone. Est-il tout autre chose, la configuration, le paramètre ou je suis absent? J'ai une classe qui a deux méthodes, la méthode annotée avec @Planifiée, exécutée et appelle le second qui a été marqué avec @Async.
Voici ma config:
<!-- Scans within the base package of the application for @Components to configure as beans -->
<context:component-scan base-package="com.socialmeety" />
<context:annotation-config />
<tx:annotation-driven transaction-manager="transactionManager" />
<task:annotation-driven/>
<!-- Configures support for @Controllers -->
<mvc:annotation-driven />
<!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<dwr:configuration />
<dwr:annotation-config />
<dwr:url-mapping />
<dwr:controller id="dwrController" debug="true" />
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
Grâce.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Que vous appelez votre @méthode Asynchrone à partir d'une autre méthode dans l'objet même, vous êtes probablement en contournant les async code proxy et juste appeler votre plaine de la méthode, c'est à dire dans le même thread.
Une façon de résoudre ce problème est de s'assurer que votre appel à l' @méthode Asynchrone est à partir d'un autre objet. Voir les commentaires à la fin de cet article:
http://groovyjavathoughts.blogspot.com/2010/01/asynchronous-code-with-spring-3-simple.html
Mais il devient malpropre faire des choses comme ça, si vous pouviez juste autowire la TaskScheduler, d'envelopper votre méthode dans un Exécutable et de l'exécuter vous-même.
J'ai eu un problème semblable. Et j'ai passé beaucoup de temps à le réparer.
Si vous utilisez printemps-contexte 3.2vous devez également ajouter @EnableAsync sur la classe où vous appelez le service méthode annotée @Async
Prendre un coup d'oeil à http://spring.io/guides/gs/async-method/#initial
J'espère que ça va vous aider.
C'est une réponse complémentaire à la accepté. Vous pouvez appeler une méthode asynchrone dans votre propre classe, mais vous devez créer un auto-référentielle de haricot.
Le seul effet secondaire est ici que vous ne peut pas appel tout async code dans le constructeur. C'est une belle façon de garder votre code tous au même endroit.
Vous pouvez utiliser
@EnableAsync
à votre service...