[SPRING] Spring 3 : @Async 주석이 달린 메소드를 TaskExecutor에서 호출하는 법
SPRINGSpring 3 : @Async 주석이 달린 메소드를 TaskExecutor에서 호출하는 법
Spring에서 비동기 태스크 실행을 처음 사용하기 때문에 바보 같은 질문이 들리면 저를 용서해주십시오.
@Async annotation은 메소드 레벨에서 Spring 3.x 이후에 도입되어 그 메소드의 호출이 비동기 적으로 발생한다는 것을 읽었습니다. 또한 스프링 설정 파일에서 ThreadPoolTaskExecutor를 구성 할 수 있다고 읽었습니다.
내가 이해할 수없는 것은 tak 실행기에서 @Async 주석이 달린 메서드를 호출하는 방법을 가정 해 보겠습니다. AsyncTaskExecutor
이전에 우리는 수업 시간에 비슷한 것을 해왔습니다.
@Autowired protected AsyncTaskExecutor executor;
그리고
executor.submit(<Some Runnable or Callable task>)
@Async 주석이 달린 메서드와 TaskExecutor 간의 관계를 이해할 수 없습니다.
인터넷을 통해 많은 검색을 시도했지만 이것에 대해서는 아무 것도 얻을 수 없었습니다.
누군가가 같은 것을 제공 할 수 있습니까?
해결법
-
==============================
1.다음은 @Async 사용의 예입니다.
다음은 @Async 사용의 예입니다.
@Async void doSomething() { // this will be executed asynchronously }
다른 클래스에서이 메서드를 호출하면 비동기 적으로 실행됩니다. 반환 값을 원하면 미래를 사용하십시오.
@Async Future<String> returnSomething(int i) { // this will be executed asynchronously }
@Async와 TaskExecutor의 관계는 @Async가 백그라운드에서 TaskExecutor를 사용한다는 것입니다. 문서에서 :
따라서 기본 실행 프로그램을 설정하려면 스프링 구성에이 값을 추가하십시오.
<task:annotation-driven executor="myExecutor" />
또는 한 번만 사용하기 위해 특정 실행 프로그램을 사용하려고 시도하십시오.
@Async("otherExecutor")
http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-annotation-support-async를 참조하십시오.
-
==============================
2.완전한 예
완전한 예
-
==============================
3.설정 파일에서 @Async (풀 이름)를 가진 스레드 풀 이름과 메소드가있는 주석 구동 태스크가 해당 풀의 일부로 실행되어야한다. 이렇게하면 @Async 주석이있는 프록시 클래스가 만들어져 모든 스레드에 대해 실행됩니다.
설정 파일에서 @Async (풀 이름)를 가진 스레드 풀 이름과 메소드가있는 주석 구동 태스크가 해당 풀의 일부로 실행되어야한다. 이렇게하면 @Async 주석이있는 프록시 클래스가 만들어져 모든 스레드에 대해 실행됩니다.
-
==============================
4.메서드에 @Async를 추가하고 응용 프로그램 컨텍스트에 다음을 추가 할 수 있습니다.
메서드에 @Async를 추가하고 응용 프로그램 컨텍스트에 다음을 추가 할 수 있습니다.
<task:annotation-driven executor="asynExecutor"/> <task:executor id="asynExecutor" pool-size="5" />
from https://stackoverflow.com/questions/17746372/spring-3-how-to-call-async-annotated-methods-from-the-taskexecutor by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] intercept-url 패턴 / ** 404 오류 발생 (0) | 2019.03.26 |
---|---|
[SPRING] 스프링 통합 - 인바운드 대 아웃 바운드 채널 어댑터 (0) | 2019.03.26 |
[SPRING] 로그인 후 세션 ID를 재생성하는 것이 좋습니다. (0) | 2019.03.26 |
[SPRING] UTF-8 인코딩으로 RestTemplate에 POST 할 수있는 방법은 무엇입니까? (0) | 2019.03.26 |
[SPRING] 스프링 보안에서 AccessDeniedException을 처리하는 방법? (0) | 2019.03.26 |