기술나눔

SpringAOP의 함정

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

여기에 이미지 설명을 삽입하세요.
AOP의 몇 가지 일반적인 알림 유형과 기본 기능은 다음과 같습니다.

  • @Before: 사전 알림, 대상 메서드가 실행되기 전에 실행됩니다.
  • @After: 메소드 실행 결과(예외 포함)와 관계없이 대상 메소드가 실행된 후 사후 알림이 실행됩니다.
  • @AfterReturning: 반환 후 알림, 대상 메서드가 정상적으로 종료된 후 실행되지만 메서드에서 예외가 발생하면 실행되지 않습니다.
  • @AfterThrowing: 대상 메서드가 예외를 throw할 때 실행되는 예외 알림입니다.
  • @Around: 서라운드 알림을 통해 대상 메서드가 실행되기 전후에 사용자 정의 작업을 수행할 수 있으며 대상 메서드를 계속 실행할지 여부도 결정할 수 있습니다.

Spring4와 Spring5의 AOP 실행 순서 차이

Spring4의 AOP 실행 순서

  • 일반 실행 순서:
    1. @Before(사전알림)
    2. 타겟 메소드 실행
    3. @After (게시물 알림)
    4. @AfterReturning(반품 후 알림)
  • 예외 실행 순서:
    1. @Before(사전알림)
    2. 대상 메소드 실행(예외 발생)
    3. @After (게시물 알림)
    4. @AfterThrowing(예외 알림)

서라운드 알림(@Around)이 구성된 경우 서라운드 알림의 전처리는 @Before 이전에 실행되고 서라운드 알림의 후처리도 @After, @AfterReturning 및 @AfterThrowing 이전에 실행됩니다.

Spring5의 AOP 실행 순서

Spring 5에서는 AOP의 실행 순서가 일부 변경되었으며 주로 @AfterReturning 및 @After의 실행 순서에 반영되었습니다.

  • 일반 실행 순서:
    1. @Before(사전알림)
    2. 타겟 메소드 실행
    3. @AfterReturning(반품 후 알림)
    4. @After (게시물 알림)
  • 예외 실행 순서:
    1. @Before(사전알림)
    2. 대상 메소드 실행(예외 발생)
    3. @AfterThrowing(예외 알림)
    4. @After (게시물 알림)

around 알림(@Around)이 구성된 경우 around 알림의 실행 순서는 여전히 전처리를 먼저 실행한 다음 대상 메서드 실행, 다른 알림(@AfterReturning, @AfterThrowing, @After), 마지막으로 실행하는 것입니다. 주변 알림 후처리.