Spring AOP란?
- 스프링 프레임워크에서 제공하는 기능 중 하나로 관점 지향 프로그래밍을 지원하는 기술.
관점 지향 프로그래밍 이란?
- 객체 지향 프로그래밍을 보완하는 기술로 메소드나 객체의 기능을 핵심관심사와 공통 관심사로 나누어 프로그래밍 하는 것을 의미
- 핵심 관심사는 각 객체가 가져야 할 본래의 기능
- 공통 관심사는 여러 객체에서 공통적으로 사용되는 코드
- 여러개의 클래스에서 반복해서 사용하는 코드가 있다면 해당 코드를 모듈화 하여 공통 관심사로 분리
Spring AOP 이해하기
주요 용어
- Aspect : 공통적인 기능들을 모듈화 한 것.
- Target : Aspect가 적용될 대상을 의미하며 메소드, 클래스 등이 이에 해당됨.
- Join Point : Aspect가 적용될 수 있는 시점을 의미하며 메소드 실행 전, 후 등이 될 수 있습니다.
- Advice : Aspect의 기능을 정의한 것으로 매서드 실행 전,후 예외처리 발생시 실행되는 코드
- Point cut : Advice를 적용할 메소드의 범위를 지정하는 것
주요 어노테이션
- @Aspect : 해당 클래스를 Aspect로 사용하겠다는 것을 명시
- @Before : 대상 메서드가 실행되기 전 Advice를 실행
- @AfterReturn : 대상 메서드가 정상적으로 실행되고 반환된 후에 Advice를 실행
- @AfterThrowing : 대상 메서드에서 예외가 발생 했을때 Advice를 실행
- @After : 대상 메서드가 실행된 후에 Advice를 실행
- @Around : 대상 메서드가 실행 전,후 또는 예외처리 발생시 Advice를 실행