비동기 처리를 위한 서비스 Class 만드는 방법
- 비동기 처리를 위한 Class 파일을 만든다.
- 비동기 처리를 시킬 메소드를 만든다.
- 필요 어노테이션
- @Async
- 반환타입
- CompletableFuture
- 리턴형식
- return new AsyncResult(실행할_메소드()).completable();
- 예시 )
- 필요 어노테이션
※ 비동기 처리를 진행한 결과를 확인하기 위해 서비스의 메소드는 주로 ListenableFuture나 CompletableFuture 형식으로 결과를 반환한다.
※ 주로 return new AsyncResult(결과물) 형식으로 값을 전달한다.
※ completable() 메소드 : ListenableFuture 객체를 CompletableFuture로 변환해서 리턴한다.
※ AsyncResult의 completable() 메소드는
AsyncResult는 기본적으로 ListenableFuture 인터페이스를 구현하고 있기 때문에
해당 결과를 CompletableFuture 형태로 바꾸기 위해 사용한다.
비동기 처리 로직 적용 방법
- @SpringBootApplication 어노테이션이 있는 클래스에 가서 @EnableAsync 어노테이션을 추가한다.
- 컨트롤러에 가서 메소드를 작성한다.
- 예외처리를 반드시 추가한다.
- 예시 : InterruptedException, ExecutionException 등등
- 해당 메소드의 return을 비동기 처리를 위해 작성한 Service의 @Async 메소드를 반환한다.
- 예시
Custom Thread
- Thread 용으로 사용할 Class를 만든다.
- 반환형이 Executor인 메소드를 만든다.
- ThreadPoolTaskExecutor 필드를 만들어 준다.
- ThreadPoolTaskExecutor의 메소드를 통해서 Thread에 대한 설정을 한다.
- 해당 객체를 return 시켜준다.
- 해당 메소드에 @Bean(“Thread명”)을 추가해준다.
※ @Async 어노테이션의 name 속성에 Thread Bean의 명시해주면
해당 Thread를 사용하도록 할 수 있다.
- 예시)