ajax나 form테그에서의 submit등을 통하여 어떠한 요청을 한 뒤에 바로 응답을 요구하는 경우가 있었습니다.(결과에 상관없이)
이럴 때 간단하게 해결하는 방법은, 요청 받는 메소드 내부에 thread를 만들어서 비지니스 로직은 따로 수행하게 하고 응답은 바로 되돌려주면 가능 합니다.
@Controller
public class ZController {
@RequestMapping(value = "/요청", method = RequestMethod.POST)
@ResponseBody
public String test(@RequestParam HashMap<Object, Object> param) {
new Thread(()-> {
//서비스 클래스에서 비지니스로직을 수행
}).start();
return "SUCC";
}
}
스프링에서는 Async라는 에노테이션을 통해서 위 방법과 동일한 효과를 나타 낼 수 있습니다.
public한 메소드에 대해서만 동작 하므로 접근 제어자에 대해서 유의하여야 합니다.
또한 같은 클래스 내부의 메서드를 호출하는 것은 되지가 않습니다.
@EnableAsync //async를 사용하겠다고 선언
@Controller
public class ZController {
@Async //async를 할 메소드
@RequestMapping(value = "/요청", method = RequestMethod.POST)
@ResponseBody
public String test(@RequestParam HashMap<Object, Object> param) {
//서비스를 통한 비지니스 로직
return "SUCC";
}
}
Async가 적용된 메소드는 스프링이 끼어들어 별도의 작업영역에 할당한 뒤에 쓰레드를 통해서 실행을 합니다.
그러므로 접근 제어자는 반드시 public이어야 합니다.
반응형
'Spring framework' 카테고리의 다른 글
스프링 Json 매핑(415, 400오류) (0) | 2019.04.29 |
---|---|
Spring, ResponseBody 오류, 406에러 (0) | 2019.04.29 |
전자정부 프레임워크(Spring) 파일 다운로드 (0) | 2019.04.29 |
스프링 resources로 프로퍼티 읽기 (0) | 2019.04.29 |
전자정부 프레임워크 서비스 (0) | 2019.04.29 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글