| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
													Tags
													
											
												
												- tomcat
 - GC
 - spring boot
 - JPA
 - Spring
 - clean code
 - OAuth
 - RabbitMQ
 - 클린코드
 - g1
 - 권한
 - 시큐리티
 - gdg
 - 스프링
 - 비동기
 - oauth2
 - Security
 - java
 - Refactoring
 - 스프링 부트
 - load balancing
 - apache
 - JWT
 - jvm
 - 페이스북
 - 스프링부트
 - 페이징
 - 리팩토링
 - Producer
 - assertj
 
													Archives
													
											
												
												- Today
 
- Total
 
허원철의 개발 블로그
Spring Boot - Async 본문
이번 글은 Spring Boot 를 이용한 비동기(Async)에 대한 글 입니다.
What..!
 비동기 통신이란?
 - 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송방식
 - (사실 무슨 말인지 모르겠습니다... 간단하게 말하자면) Request 가 들어올 때 하나의 Thread로 모든 처리를 하고 Response 하는 것(Sync 방식)이 아니라, Request 가 들어올 때 기본적인 Thread가 생성이 되면서 별도의 Thread 생성하여 처리하는 것(Async 방식)이라고 말할 수 있습니다.
When..?
1. Log 처리
2. Push 처리
.. 등등 Client에 영향이 끼치지 않고 별개의 처리를 할 때 사용할 수 있습니다.
이렇게 함으로써, Client 에게 조금더 빠른 Response를 줄 수 있게 됩니다.
How..?
1. Gradle 설정
2. Config 설정
3. Service & Controller 설정
4. Result
1. Gradle 설정
 - spring-context 3.1 이후에 기능으로, 부트를 사용하는 경우 제약 없이 사용 가능 합니다.
2. Config 설정
 - @EableAsync 를 Config 파일에 선언 해줍니다.
기본적으로는, SimpleAsyncTaskExecutor 이 사용됩니다.
3. Service & Controller 설정
[ Service ]
- async를 사용하기 위해서는 두가지 제약이 있습니다.
1) Service 안에서만 가능합니다.
2) 같은 Service 내의 호출은 async 되지 않습니다.
명확한 비교를 하기 위해, 두 개의 메소드를 준비하고, 약 1초정도 멈춘 뒤, 로그를 찍는 형태를 메소드를 준비합니다.
[ Controller ]
Controller에서 Service를 Autowired 하여 /async 와 /sync 를 test 합니다.
4. Result
결과를 보면, 
/sync 는 onSync 가 출력되고 난 후 반환되는 것을 볼 수 있고,
/async 는 onAsync 가 출력되지 전에 반환 후 출력되는 것을 볼 수 있습니다.
'web' 카테고리의 다른 글
| 페이징에 대한 이해 - 2 (396) | 2016.12.08 | 
|---|---|
| 페이징에 대한 이해 - 1 (429) | 2016.12.06 | 
| Spring Boot - Swagger (411) | 2016.12.05 | 
| Spring Boot - Custom Jackson Converter (415) | 2016.12.05 | 
| Spring Boot - Cache (412) | 2016.12.05 | 
			  Comments