Spring

[Spring] AOP(관점 지향 프로그래밍)

기록하는_사람 2022. 11. 4. 17:36

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