[Chapter 12] @Order, @Async #199
-
Q1p.733에
라는 말이 있던데 이게 Q2p.736 마지막 문단에
라고 되어있는데 그럼 |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
Q1. 말씀하신 부분이 맞는 것 같습니다. Q2. 위 사이트를 보면 같은 패키지 내라면 클래스 명 오름차순 순 패키지 외라면 패키지 명 오름차순 순으로 적용이 된다고 합니다. |
Beta Was this translation helpful? Give feedback.
-
Q1)
그 이유로는 @BvrPark 님께서 생각하신대로 @async를 사용할 때 비동기적인 메서드 호출을 프록시 객체를 통해 구현하고 해당 프록시 객체는 인터페이스 기반의 프록시를 생성하고, 프록시된 메서드 호출 시 실제 메서드를 비동기적으로 호출하는 방식으로 동작한다고 합니다. 이러한 방식이 AOP 기능을 이용하는 것이고 AOP 프록시는 대상 메서드가 인터페이스에 선언된 메서드에 해당해야 하므로 public 메서드에만 @async를 사용할 수 있다고 합니다. ( Q2) 우선 순위가 동일하다 -> 순서가 중요하지 않다 라는 의미라면 따로 스프링 빈의 경우 우선순위를 지정하지 않은 상태에서는 (order를 두지않으면_ 빈 초기화 순서를 보장하지 않는 정책이 있어 스프링 빈에 등록된 순서대로 처리함을 보장할 수 없습니다. order 값이 중복되면 위 @ahngilwoong 님이 올려주신 부분을 참고하시면 될 것 같습니다. |
Beta Was this translation helpful? Give feedback.
Q1. 말씀하신 부분이 맞는 것 같습니다.
Q2.
참고
위 사이트를 보면 같은 패키지 내라면 클래스 명 오름차순 순 패키지 외라면 패키지 명 오름차순 순으로 적용이 된다고 합니다.
더욱 자세히 설명하자면 빈이 먼저 선언된 순서대로 인데
보통 패키지 내에서 클래스들이 알파벳 순으로 정렬되어 a부터 먼저 선언되었다고 판단하니 이름에대해 오름차순이라고 판단하는 것 같습니다.
정확히는 빈이 먼저 선언된 순서가 맞다 라고 생각합니다.