[STS] AOP

안아현·2024년 8월 22일

Spring

목록 보기
7/13

AOP

  1. 객체 지향 프로그래밍
    객체 지향 프로그래밍은 문자 그대로 객체를 중심으로 설계하는 프로그래밍이다. OOP는 객체를 중심으로 프로그램이 작성되기 때문에 트랜잭션 관리, 권한처리, 보안 등 공통 로직이 여러 클래스에 흩어져 위치한다. AOP는 객체 지향 프로그래밍의 이러한 단점을 보완하고자 사용된다.

  2. AOP
    Aspect Oriented Programming, 관점 지향 프로그래밍의 약자이다. 여기서 말하는 관점은 핵심 로직은 아니지만 개발시 염두에 두어야 하는 일을 가리킨다. 가령 권한처리, 보안처리, 예외처리 등이 '관점'에 해당한다. AOP는 핵심로직과는 거리가 먼 별도의 처리들을 '공통 로직'으로 분리한다. 핵심 로직과 주변 로직이 한 파일에 함께 위치하는 객체 지향 프로그래밍과 달리, AOP는 핵심로직과 주변로직을 구분하여 코드를 작성하고 컴파일 혹은 실행하는 시점에 결합한다.

  3. Aspect
    보안, 트랜잭션, 권한처리 등 여러 클래스에서 공통으로 적용되어야 하는 기능을 정의한다. Advice와 Pointcut를 구성요소로 가진다.

  4. Advice
    Aspect가 실행할 실질적인 동작을 정의하는 코드이다. Advice는 종류에 따라 Jointpoint에 수행하는 동작이 다르다. Advice의 종류는 다음과 같다.

  • Jointpoint
    Advice가 실행될 지점을 지정한다. 메서드 호출, 객체 생성 등이 Jointpoint로 작용할 수 있다.
  • Before Advice: Joinpoint 이전에 수행된다.
  • After Advice: Joinpoint 이후 수행된다.
  • Around Advice: Joinpoint 이전과 이후에 모두 수행되는 코드로, Jointpoint 제어에 사용되는 것이 보통이다.
  • After Returning Advice: Joinpoint가 정상적으로 실행된 경우 실행된다.
  • After Throwing Advice: Joinpoint에서 예외가 발생했을 때 실행된다.
  1. Pointcut
    Advice가 적용되는 Joinpoint를 지정하는 표현식이다. 다시 말해, 여러 Joinpoint 가운데 Advice를 적용할 지점을 선택하기 위한 규칙 또는 표현식이다.

👉 Pointcut이 필터링한 Joinpoint에 Advice 코드가 실행된다.

profile
programming

0개의 댓글