[SPRING] Spring @Async v 호출 가능 컨트롤러 (비동기 컨트롤러, 서블릿 3)
SPRINGSpring @Async v 호출 가능 컨트롤러 (비동기 컨트롤러, 서블릿 3)
Callable을 사용하여 Spring에서 @Async와 Servlet 3 비동기 요청 구현을 사용하는 일반적인 사용 사례를 알고 싶습니다.
알다시피 @Async는 모든 메서드 (특히 모든 서비스 메서드)를 비동기 적으로 실행하기위한 것입니다.
@Async
void doSomething(String s) {
// this will be executed asynchronously
}
호출 가능을 반환하는 컨트롤러
@RequestMapping("/view")
public Callable<String> callableWithView(final Model model) {
return new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(2000);
model.addAttribute("foo", "bar");
model.addAttribute("fruit", "apple");
return "views/html";
}
};
}
나는 무엇을 사용해야하는지 혼란 스럽다. 비동기 서블릿 / 컨트롤러 및 스프링 @Async를 함께 사용하면 어떤 영향이 있습니까?
해결법
-
==============================
1.이 게시물에는 찾고있는 것에 대한 설명이 있습니다.
이 게시물에는 찾고있는 것에 대한 설명이 있습니다.
발췌 :
호출 가능 반환 값 유형은 컨트롤러 메서드를 비동기로 만듭니다. 이것은 보통 긴 폴링과 같은 상황에서 사용됩니다. 자세한 내용은 같은 저자가이 게시물을 읽으십시오.
또한 호출 가능 (callable)은 Runnable의 대안이며, 의미 상으로 결과를 반환하고 검사 된 예외를 throw 할 수 있습니다.
방법이 있다고 해봅시다.
public String aMethod(){ }
Callable 인터페이스를 반환하면 비동기로 만들 수 있습니다.
public Callable<String> aMethod(){ }
-
==============================
2.Callable 인터페이스를 사용하여 단일 요청 성능을 향상시킬 수 없으면 어떤 경우에는 더 많은 요청을하는 것이 도움이됩니다. 응답 유형이 무효 인 경우, callable 대신 runnable을 사용할 수 있으므로 runnable을 사용하면 단일 요청 응답 시간을 향상시킬 수 있습니다.
Callable 인터페이스를 사용하여 단일 요청 성능을 향상시킬 수 없으면 어떤 경우에는 더 많은 요청을하는 것이 도움이됩니다. 응답 유형이 무효 인 경우, callable 대신 runnable을 사용할 수 있으므로 runnable을 사용하면 단일 요청 응답 시간을 향상시킬 수 있습니다.
from https://stackoverflow.com/questions/17167020/when-to-use-spring-async-vs-callable-controller-async-controller-servlet-3 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @Transactional의 이상한 동작 (propagation = Propagation.REQUIRES_NEW) (0) | 2019.01.01 |
---|---|
[SPRING] Spring 배치 @BeforeStep은 @StepScope와 작동하지 않습니다. (0) | 2019.01.01 |
[SPRING] 언제 봄 콩 파괴 방법이라고? (0) | 2019.01.01 |
[SPRING] 비 싱글 톤 빈에서 캐스팅 된 스프링 프록시에서 BeanNotOfRequiredTypeException 수정? (0) | 2019.01.01 |
[SPRING] 스프링 보안 - 이미 로그인 한 경우 리디렉션 (0) | 2019.01.01 |