관점 지향 프로그래밍 (Aspect Oreinted Programming)

관점 지향 프로그래밍은 소스 코드의 여기저기에 흩어져 있는 횡단 관심사를 중심으로 설계와 구현을 하는 프로그래밍 기법이다.간단하게 설명하면 관점 지향 프로그래밍은 횡단 관심사의 분리를 실현하는 방법이다.

필터 와 인터셉터, 그리고 AOP의 차이를 구별해서 알아두는 것이 좋다.특히 AOP는 핵심 비지니스 로직과 관련하여 공통부분을 모듈화 한 것이다.

interceptor.jpg

횡단 관심사(Cross-Cutting Concern)

핵심 비즈니스 로직과 다소 거리가 있지만, 여러 모듈에서 공통적이고 반복적인 처리를 요구하는 내용이다.

횡단 관심사의 분리(Separation Of Cross_Cutting Concerns)

애플리케이션 개발할 때 횡단 관심사에 해당하는 부분을 분리해서 한 곳으로 모으는 것을 의미한다.

AOP구현

스프링에서는 프락시 기반으로 AOP를 구현한다.

순서

  1. 핵심 비즈니스 로직에만 근거해서 코드를 작성한다.

  2. 주변 로직에 해당하는 관심사들을 분리해서 따로 작성한다.

  3. 핵심 비즈니스 로직 대상 객체에 어떤 관심사를 결합할 것인지를 설정한다.

KakaoTalk_20230320_082433009.jpg

AOP 관련 용어

포인트 컷 표현식

1)execution 지시자의 표현 방식

execution(Board com.spring.aop.BoardService*.read*(..))
  1. 포인트컷 표현요소에 대한 설명
  1. 포인트컷 표현식에 사용되는 와일드 카드