[SPRING] @Async가 나를 위해 작동하지 않습니다.
SPRING@Async가 나를 위해 작동하지 않습니다.
@Scheduled를 사용하고 있으며 잘 작동하지만 @Async가 작동하지 않습니다. 여러 번 테스트 해 보았는데 비동기 방식으로 만들고있는 것 같습니다. 다른 것, 구성 또는 매개 변수가 누락 되었습니까? 하나의 클래스에는 두 개의 메서드 하나가 있습니다. @Scheduled로 표시된 메서드는 @Async로 표시된 두 번째 메서드를 실행하고 호출합니다.
여기 내 설정입니다 :
<!-- 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" />
감사.
해결법
-
==============================
1.동일한 객체의 다른 메소드에서 @Async 메소드를 호출 할 때 비동기 프록시 코드를 무시하고 일반 메소드 (즉, 동일한 스레드 내)를 호출하는 것일 수 있습니다.
동일한 객체의 다른 메소드에서 @Async 메소드를 호출 할 때 비동기 프록시 코드를 무시하고 일반 메소드 (즉, 동일한 스레드 내)를 호출하는 것일 수 있습니다.
이 문제를 해결하는 한 가지 방법은 @Async 메서드에 대한 호출이 다른 개체에서 발생했는지 확인하는 것입니다. 이 기사 끝 부분의 주석보기 : http://groovyjavathoughts.blogspot.com/2010/01/asynchronous-code-with-spring-3-simple.html
하지만 이런 일을 지저분 해지면 TaskScheduler를 자동으로 실행하고 메서드를 Runnable에 래핑하여 직접 실행할 수 있습니다.
-
==============================
2.이것은 받아 들여진 것에 대한 보완적인 대답입니다. 자신의 클래스에서 async 메서드를 호출 할 수 있지만 자체 참조 빈을 만들어야합니다.
이것은 받아 들여진 것에 대한 보완적인 대답입니다. 자신의 클래스에서 async 메서드를 호출 할 수 있지만 자체 참조 빈을 만들어야합니다.
유일한 부작용은 생성자 내부에서 비동기 코드를 호출 할 수 없다는 것입니다. 코드를 모두 같은 위치에 유지하는 좋은 방법입니다.
@Autowired ApplicationContext appContext; private MyAutowiredService self; @PostConstruct private void init() { self = appContext.getBean(MyAutowiredService.class); } public void doService() { //This will invoke the async proxy code self.doAsync(); } @Async public void doAsync() { //Async logic here... }
-
==============================
3.나는 이것과 비슷한 문제가 있었다. 그리고 그것을 고칠 시간을 많이 보냈습니다.
나는 이것과 비슷한 문제가 있었다. 그리고 그것을 고칠 시간을 많이 보냈습니다.
스프링 컨텍스트 3.2를 사용하는 경우 @Async가 주석 된 메서드 서비스를 호출하는 클래스에 @EnableAsync도 추가해야합니다.
http://spring.io/guides/gs/async-method/#initial을 살펴보십시오.
나는 그것이 당신을 도울 것이기를 바랍니다.
-
==============================
4.귀하의 서비스에서 @EnableAsync를 사용할 수 있습니다 ...
귀하의 서비스에서 @EnableAsync를 사용할 수 있습니다 ...
from https://stackoverflow.com/questions/4060718/async-not-working-for-me by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JSR-303 @Valid 주석이 하위 객체 목록에 대해 작동하지 않습니다. (0) | 2019.02.25 |
---|---|
[SPRING] Eclipse가`ehcache '와 동작하도록 설정하는 법 (0) | 2019.02.25 |
[SPRING] 봄 부팅에서 ProblemHandler를 ObjectMapper로 설정할 수 없음 (0) | 2019.02.25 |
[SPRING] Spring 데이터 MongoDB 저장소 - JPA 스펙 (0) | 2019.02.25 |
[SPRING] 추상 클래스에 정의 된 스프링 autowire 의존성 (0) | 2019.02.25 |