스프링 AOP로 애스펙트 사용

김우진·2026년 2월 17일

Spring

목록 보기
6/17
post-thumbnail

[Spring] 06. 스프링 AOP로 애스펙트(Aspect) 사용하기

오늘은 스프링의 핵심 중 하나인 AOP(관점 지향 프로그래밍)에 대해 공부했습니다. 비즈니스 로직과 공통 로직(로깅, 트랜잭션 등)을 분리하여 유지보수성을 극대화하는 마법 같은 기술입니다.


1. AOP 핵심 용어 정리

AOP를 이해하기 위해 가장 먼저 정복해야 할 세 가지 개념입니다.

  • 애스펙트(Aspect): "무엇을 할 것인가?" 특정 메서드 호출 시 실행하길 원하는 코드(로직) 자체입니다.
  • 어드바이스(Advice): "언제 할 것인가?" 이 로직을 메서드 실행 전, 후 중 언제 실행할지 정의합니다.
  • 포인트컷(Pointcut): "어디에 할 것인가?" 어떤 메서드를 가로채서 애스펙트를 적용할지 결정하는 필터 역할을 합니다. (AspectJ 표현식 사용)

2. 애스펙트 구현 4단계

스프링에서 AOP를 적용하는 구체적인 순서입니다.

① 애스펙트 활성화

설정 클래스(Config)에 @EnableAspectJAutoProxy 애너테이션을 추가하여 스프링이 애스펙트를 인식할 수 있게 합니다.

② 애스펙트 클래스 생성 및 빈 등록

클래스 위에 @Aspect를 붙여 이 클래스가 애스펙트임을 명시합니다.

⚠️ 주의: @Aspect만 붙인다고 자동으로 빈이 되지 않습니다! 반드시 @Component를 붙이거나 @Bean으로 등록하여 스프링 컨텍스트에 포함시켜야 합니다.

③ 메서드 정의 및 어드바이스 설정

어떤 메서드를 가로챌지 어드바이스 애너테이션을 통해 지시합니다.

④ 로직 구현

가로챈 메서드 전후에 실행할 구체적인 코드를 작성합니다.


3. 어드바이스의 종류와 실행 순서

🖐️ 어드바이스 5형제

스프링은 메서드 실행 시점에 따라 5가지 어드바이스를 제공합니다.

  1. @Around: 가장 강력함! 메서드 실행 전후를 모두 제어하며, 아예 로직을 대체할 수도 있음.
  2. @Before: 메서드 실행 전.
  3. @After: 메서드 실행 후 (결과와 상관없이).
  4. @AfterReturning: 메서드가 성공적으로 반환된 후.
  5. @AfterThrowing: 메서드에서 예외가 발생한 후.

🔢 실행 순서 제어 (@Order)

하나의 메서드에 여러 개의 애스펙트가 걸려 있다면, @Order 애너테이션으로 순서를 정해줍니다.

  • 예: @Order(1)@Order(2)보다 먼저 실행됩니다. 숫자가 낮을수록 우선순위가 높습니다!

💡 마무리하며

AOP는 결국 "반복되는 공통 코드를 한곳으로 모아 관리하는 기술"입니다. 스프링이 관리하는 모든 객체(Bean)에 대해 메서드 호출을 가로챌 수 있다는 점이 핵심입니다.

#Spring #AOP #AspectJ #백엔드 #개발공부

0개의 댓글