토마토바구니
1k
2021-11-06 17:55:05 작성 2021-11-21 23:53:37 수정됨
6
1109

@Async, 생각보다 까다롭다


안녕하세요.


이번에는 스프링의 @Async를 사용하며, 개인적으로 만났던 문제점과 공부해본것을 정리했습니다.


있는 내용: 프록시 패턴, AOP


https://yeon-kr.tistory.com/188


+) 부족하거나, 잘못된 내용이 있다면 언제든지 댓글로 지적해주시면 감사하겠습니다.

0
  • 댓글 6

  • Dierslair
    5k
    2021-11-06 22:16:50

    잘 봤습니다 ^^

    애노테이션 기반의 AOP가 코드를 간단하게 작성할 수 있게 해 주지만 프록시 클래스를 실제 볼 수 있는 방법이 제한되기에 어떻게 동작하는 지 그냥 넘어가는 경우가 많아서 충분히 있을 수 있는 일인 것 같습니다.

  • 토마토바구니
    1k
    2021-11-07 04:07:53 작성 2021-11-08 23:30:37 수정됨

    Dierslair 


    읽어주셔서 너무 감사합니다!


    그동안 아무생각없이 사용했었는데, 이번 기회에 많이 배울 수 있었습니다ㅎㅎ

  • 한국은역시자바
    933
    2021-11-08 06:33:56

    한가지 질문이 있습니다. @Async 어노테이션을 사용할 때 Bean네임을 선언하지 않으면 SimpleTaskExecutor가 default로 사용되는걸로 알고있고 직접 생성한 ThreadPoolTaskExecutor를 사용하려면 Bean네임을 명시적으로 적어줘야하는걸로 알고있습니다.


    근데 반환타입이 CompletableFuture면 안그래도 되는건가요?

  • 토마토바구니
    1k
    2021-11-08 19:03:05 작성 2021-11-08 23:30:27 수정됨

    한국은역시자바


    제가 제대로 이해한건지 모르겠지만..일단 답변을 드리자면요.


    말씀대로 쓰레드 설정을 해주지 않으면 SimpleAsyncTaskExcutor로 동작하는것으로 알고있습니다. 즉 직접 @Async를 사용할 때 bean name을 정의하지 않더라도, 비동기로 동작합니다. 그리고 이러한것을 가능하게 해주는게 @EnableAsync 입니다.


    CompletableFuture는 해당 동작과 관계 없습니다! 단지 리턴을 위해 코드를 짜면서 넣었는데, 조금 헷갈리게 해서 죄송합니다ㅠㅠ

  • 카랑
    15
    2021-11-15 17:14:36

    스프링에서 Bean의 public 펑션은 내부에서 self 호출 하는 경우는 항상 주의 해야겠더군요.

    테스트 등으로 spy 로 부를 때도 예상하고 다른 결과가 나오거나 하던데...... async도 비슷하네요.

  • 토마토바구니
    1k
    2021-11-15 22:32:52

    카랑

    저도 해당 부분은 생각을 못 해봤다가, 최근에 겪으면서 황당했습니다ㅎㅎ


  • 로그인을 하시면 댓글을 등록할 수 있습니다.