240910 내일배움캠프 백엔드 Java 6기 TIL : AOP

박대현·2024년 9월 10일
0

AOP란?

AOP의 정의

핵심사항, 부가기능, 그리고 횡단관심사

정리

AOP는 핵심기능과 부가기능(횡단관심사)를 분리해서 관리하는 것

AOP 키워드 정리

어드바이스

  • 실제로 실행되는 부가기능(횡단관심사)

포인트컷

  • 어드바이스가 적용되는 범위(를 선택하는 규칙)

타겟

  • 어드바이스가 적용되는 객체

조인포인트

  • 포인트컷이 가리키는 실제로 어드바이스가 적용되는 지점(대게 method)

애스팩트

  • 어드바이스 + 포인트컷

AOP적용

패키지 범위 기반 포인트 컷 만들기

@Aspect
public class AspectPractice {
    /**
     * 포인트컷 : 서비스 패키지 기반
     */
    @Pointcut("execution(* com.standard.sparta.service..*(..))")
    private void serviceLayer() {}
}

어노테이션 범위 기반 포인트 컷 만들기

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TrackTime {
}
  • 해당하는 메서드 위에 어노테이션 달면 됨

어드바이스 종류살펴보기

    /**
     * 어드바이스: 가장 강력한 어드바이저, 전체 흐름을 제어할 수 있습니다.
     * @param joinPoint
     * @return
     * @throws Throwable
     */
    @Around("serviceLayer()")  // 어노테이션 기반으로 포인트컷 설정
    public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {

        log.info("::: BEFORE :::");
        try {
            Object result = joinPoint.proceed();
            System.out.println(result);
            log.info("::: AFTER RETURNING :::");
            return result;

        } catch (Exception e) {
            log.info("::: AFTER THROWING :::");
            throw e;

        } finally {
            log.info("::: AFTER :::");
        }
    }

AOP 동작원리 맛보기

0개의 댓글