AOP란
- AOP는 객체 지향 프로그래밍(OOP)의 한계를 보완하기 위해 등장한 개념으로, 공통적인 기능(로깅, 트랜잭션, 보안 검사 등)을 핵심 비즈니스 로직과 분리하여 관리할 수 있도록 하는 프로그래밍 패러다임
@Aspect
- 클래스에 AOP 기능이 있음을 선언
- 해당 클래스가 Aspect (공통 기능을 포함하는 클래스) 역할을 함
@Pointcut
- AOP가 적용될 대상을 정의하는 어노테이션
- 특정 메서드나 패키지를 Pointcut 표현식으로 지정 가능
@Before
- 메서드 실행 전에 실행되는 Advice
- 공통 기능(로깅, 보안 검사 등)을 수행할 때 사용
@After
- 메서드 실행 후에 실행되는 Advice
- 성공/실패 여부와 관계없이 무조건 실행됨
@AfterReturning
- 메서드가 정상적으로 실행된 후 실행되는 Advice
- 반환값을 활용할 수 있음
@AfterThrowing
- 메서드 실행 중 예외가 발생했을 때 실행되는 Advice
@Around
- 메서드 실행 전/후 및 예외 발생 시 모두 실행되는 Advice
- ProceedingJoinPoint를 사용하여 직접 메서드 실행을 조작할 수 있음
@EnableAspectJAutoProxy
- Spring에서 AOP 기능을 활성화하는 설정
- 보통 @Configuration과 함께 사용
어노테이션 설명
- @Aspect AOP 클래스(Aspect)임을 선언
- @Pointcut AOP가 적용될 대상을 지정
- @Before 메서드 실행 전에 실행되는 Advice
- @After 메서드 실행 후에 실행되는 Advice (예외 발생 여부와 관계없음)
- @AfterReturning 메서드가 정상적으로 실행된 후 실행되는 Advice
- @AfterThrowing 메서드 실행 중 예외 발생 시 실행되는 Advice
- @Around 메서드 실행 전/후 및 예외 발생 시 모두 실행되는 Advice (가장 강력함)
- @EnableAspectJAutoProxy Spring에서 AOP 기능을 활성화
용어 설명
- Aspect 공통 기능(로깅, 트랜잭션 등)을 모듈화한 클래스
- Advice 언제(전, 후, 예외 발생 시) 공통 기능을 실행할지 정의
- JoinPoint Advice가 적용될 수 있는 실행 지점 (주로 메서드 실행)
- Pointcut Advice가 실행될 메서드를 지정하는 표현식
- Weaving Advice를 실제 코드에 적용하는 과정
- Target Object AOP가 적용되는 실제 객체 (핵심 비즈니스 로직을 가진 클래스)
- Proxy Target Object를 감싸고 Advice를 적용하는 객체
- Introduction 기존 클래스에 새로운 기능(메서드, 필드 등)을 추가