개발 창고/SpringFramework

[Spring] What is Aspect Oriented Programming?

로이제로 2023. 12. 1. 22:00
반응형

 

Aspect Oriented Programming (관점지향)

"Action의 전/후에 반복되는 행위"

 저는 보통 이렇게 정의를 내리곤 합니다. 그 이유는 AOP라는 것 자체가 어떠한 메서드를 수행하기 전이나 후에 정해진 규칙(Rule)의 트리거를 통하여 발생하기 때문입니다.

 이 개념이 주로 사용되는 부분은 보통 DB의 Query를 수행하기 전 후 Transaction 처리나, 메서드의 시작 전과 후에 발생하는 Log처리, 그리고 웹에서 요청한 Client가 로그인을 한 사용자인지 비로그인 사용자인지 체크 등등에서 사용됩니다.

 

주요개념

Word Description
Aspect 흩어져있는 관심사의 모듈화
Target Aspect를 적용할 대상 (Class, Method, 등등)
Advice 적용할 대상에 대해서 수행할 기능들의 집합
JointPoint Advice가 적용되는 Event 시점(ex. 메서드 호출 이전, 메서드 호출 이후 등등)
PointCut JointPoint의 상세 스펙 정의

 

Advice 종류

 

Type Description
beforeAdvice 사전처리 method 
after 사후 처리 method
after-throwing 예외 처리 method
after-returing 반환 처리 method 정의
aroundAdvice 해당 pointCut 매서드가 호출되기 전에 인터셉터되고, pjp.proceed(); 만나는 순간, 호출된 매서드가 실행됨. 이후, 다시 남은 aroundLog가 실행이 된 이후에, return obj가 됨.
반응형