[Spring] AOP(관점 지향 프로그래밍)
AOP(관점 지향 프로그래밍)
📌 AOP(관점 지향 프로그래밍, Aspect Oriented Programming)
: '횡단적 관심사'를 추출하고, 프로그램의 여러 곳에서 호출할 수 있게 함으로써
개발자는 실현해야 할 기능인 '중심적 관심사'에만 집중해서 작성할 수 있게 하는 구조.
📌 중심적 관심사(Primary Concern)
: 실현해야 할 기능을 나타내는 프로그램.
📌 횡단적 관심사(Crossutting-Concerns)
: 품질이나 유지보수 등의 관점에서 반드시 필요한 기능을 나타내는 프로그램.
📌 용어
어드바이스(Advice) | 횡단적 관심사를 구현한 메서드. 로그 출력 및 트랜잭션 제어 등. |
애스펙트(Aspect) | 어드바이스를 정리한 클래스. |
조인포인트(JoinPoint) | 어드바이스를 중심적인 관심사에 적용하는 타이밍. |
포인트컷(Pointcut) | 어드바이스를 삽입할 수 있는 위치. |
인터셉터(Interceptor) | 처리의 제어를 인터셉트하기 위한 구조 또는 프로그램. |
타깃(Target) | 어드바이스가 도입되는 대상. |
인터셉터(Interceptor) 동작 방식
📌 인터셉터(Interceport) 동작 방식
예. A 클래스에서 B 클래스이 X 메서드 호출하는 경우,
① B 클래스의 X 메서드를 '중심적 관심사'와 '횡단적 관심사'로 분리해, 애스펙트와 어드바이스 만듦.
② AOP 프락시가 처리를 가로채고, X 메서드 및 어드바이스 호출을 제어함.
📌 어드바이스 종류
Before Advice | 중심적 관심사가 실행되기 전에 실행. | @Before |
After Returning Advice | 중심적 관심사가 정상적으로 종료된 후 실행. | @AfterReturning |
After Throwing Advice | 중심적 관심사로부터 예외가 던져진 후 실행. | @AfterThrowing |
After Adivce | 중심적 관심사 실행 후 실행. | @After |
Around Advice | 중심적 관심사 호출 전후에 실행. | @Around |
포인트컷 식
📌 포인트컷 식
: 직접 어드바이스를 만들 경우, 패키지, 클래스, 메서드 등 어드바이스 삽입 대상 조건 지정할 때 사용.
📌 execution 지시자의 구문
execute(반환값 패키지.클래스.메서드(인수))
📌 와일드 카드
* | 임의의 문자열을 나타냄. 패키지에서 사용할 경우, 임의의 패키지 한 계층을 나타냄. 메서드의 인수에서 사용할 경우, 한 개의 인수를 나타내 반환값으로 사용. |
.. | 패기지에서 사용할 경우, 0개 이상의 패키지 나타냄. 메서드의 인수에서 사용할 경우, 0개 이상의 임의의 인수 나타냄. |
+ | 클래스명 뒤에 사용할 경우, 클래스와 서브 클래스 및 구현 클래스 모두를 나타냄. |
AOP 프로그램 만들기
https://codingrecord2209.tistory.com/290
[Spring] AOP 프로그램 만들기
AOP 프로그램 만들기 📌 AOP를 사용하려면 아래 코드를 build.gradle에 추가해야 함. ... dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-aop' //
codingrecord2209.tistory.com