Spring AOP

안성희·2025년 9월 1일

자바 스터디

목록 보기
2/5

Spring은 AOP를 지원하기 위해 특별한 기능과 구조를 제공함

프록시 기반 AOP 구현

런타임에 대상 객체를 감싸는 동적 프록시를 만듬
메서드 실행 시점에 부가기능을 끼워넣는 방식을 사용

  • 해당 구조는 메서드 호출 시에만 AOP가 적용되도록 함
  • 핵심 비즈니스 로직에 영향을 주지 않고 부가 기능을 동적으로 적용 가능
런타임에 대상 객체를 감싼다면 왜 하필 런타임에 객체를 감싸는건지? 다른 시점에도 객체를 감싸도 되는건지? > Spring은 개발 편의성과 유연성을 중시함 > 대부분의 웹 애플리케이션에서 성능 차이는 미미하지만, 개발과 운영의 편의성은 크게 향상됨 메서드 호출 시에만 AOP가 적용되도록 한 이유는?

기술적 제약 과 의도된 설계 선택으로, 복잡성을 줄이고 실용성을 높이기 위한 결정

애스펙트(Aspect), 어드바이스(Advice), 포인트컷(Pointcut) 개념 지원

애스펙트(Aspect)

부가 기능(어드바이스)과 그것이 적용될 위치(포인트 컷)를 합친 모듈 단위

어드바이스(Advice)

  • 부가기능 코드
  • 메서드 실행 전(@Before), 후(@After), 예외 발생 시(@AfterThrowing), 메서드 실행 전후 모두(@Around) 등 다양한 시점에서 실행 가능

포인트컷(Pointcut)

Advice가 적용될 대상 메서드를 지정하는 조건식
메서드명, 클래스명, 패키지명, 애노테이션 등 다양한 기준으로 세밀하게 적용 대상을 필터링 가능

어노테이션 기반 설정 지원

어노테이션을 사용해 간편하게 AOP 설정과 구현이 가능하도록 지원

JoinPoint, ProceedingJoinPoint 인터페이스 제공

AOP 코드 내에서 실행 중인 메서드의 정보, 파라미터, 대상 객체 등을 쉽게 가져오고 제어 가능하게 함
@Around 어드바이스에서는 proceed() 호출로 핵심 로직 실행을 명시적으로 제어 가능

JoinPoint

Advice가 실행되는 시점

profile
무재다능 개발자

1개의 댓글

comment-user-thumbnail
2025년 11월 13일

관련 코드 예제가 있으면 좋을 것 같습니다.

답글 달기