본문 바로가기
✨ Back-end/etc

[Spring] AOP 개념과 용어 8가지

by 환풍 2023. 8. 25.
728x90
반응형

 

AOP란?

관점지향 프로그래밍으로, 문제를 바라보는 관점을 기준으로 프로그래밍 하는 방법론

what when where

횡단관심사(cross-cutting-concerns)

흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리해 재사용하는 것이 AOP다.

어떤 클래스의 어떤 메소드가 실행되기 전/ 후에 다른 기능을 수행할 수 있는 코드를 캡슐화 하는것이다

즉, 비 기능적 요구사항이 핵심 애플리케이션 코드에 나타나지 않도록 캡슐화하는 것.

목적 : 공통 기능 관련 로직(로깅, 트랜잭션 관리, 보안 등)의 분리, 핵심로직 구현 코드

 

AOP 용어

  1. 어드바이스 ( Advice )
  2. 조인포인트 ( JoinPoint )
  3. 포인트 컷 ( PointCut)
  4. 애스팩트 ( Aspect )
  5. 인트로덕션 ( Introduction )
  6. 타깃 ( Target )
  7. 프록시 ( Proxy )
  8. 위빙 ( Weaving )

Advice

 Aspect가 언제(when), 무엇을(What) Target 객체의 메서드를 수정하거나 보조하는 동작을 정의하는 것이다.
주로 메서드의 실행 전(pre), 실행 후(post), 에외 발생시(after-throwing), 반환 값 처리시(after-returning)시점서 실행
  • 무엇(What)과, 언제(When)을 정의한다.
  • Cross-cutting Concern(공통 관심 사항)을 Core Concern(핵심 로직)에 언제 적용할 것인가를 정의한다.
  • 타겟에 제공할 부가기능을 담고 있는 모듈이다.

           
<aop:before> 메소드 실행전에 advice를 정의한다.
<aop:after-returning> 메소드가 advice를 정의한다.
<aop:after-thorwing> 메소드가 advice를 정의한다
try-catch 블록에서 catch 블록과 비슷하다.
<aop:after> 메소드가 advice를 정의한다
try-catch-finally에서 finally 블록과 비슷하다.
<aop:arround> 메소드, 이후, 예외발생 등 모든 시점에 적용가능한 advice를 정의한다

 

 

 

[Spring-legacy] xml로 AOP 어드바이스(Advice)

AOP의 역할들에는 다양하게 있다. 1. 어드바이스 (Advice) 2. 조인포인트 (JoinPoint) 3. 포인트 컷 (PointCut) 4. 애스펙트 (Aspect) 5. 인트로덕션 (Introduction) 6. 타깃( Target) 7. 프록시 (Proxy) 8. 위빙(Weaving) 이번

bright-landscape.tistory.com

Advice에 대해 자세히 정리한 포스팅을 해보았다.

 

JoinPoint

어드바이스(Advice)가 적용될 수 있는 프로그램의 실행 지점이다. 메서드 실행, 필드 값 변경, 생성자 호출 등
  • Where(어디에)의 의미.
  • 공통 관심 사항을 적용할 수 있는 애플리케이션의 실행 지점
  • 타겟 객체가 구현한 인터페이스의 모든 method는 JoinPoint가 된다.

 

PoinCut

어드바이스가 적용되어야 하는 조인포인트의 집합을 정의하는 것이다. 즉, 어떤 메서드나 지점에 어떤 어드바이스를 적용할지를 결정하는 규칙이다.
  • Where(어디에)의 의미
  • 메서드명을 직접 명시하거나, 매칭 패턴을 나타내는 정규표현식을 정의하여 사용
  • Advice를 적용할 타겟의 method를 선별하는 정규표현식이다.

 

Aspect

어드바이스와 포인트 컷의 조합으로 어떤 관심사를 어느 지점에서 어떻게 처리할지 결정
  • 언제, 어디서, 무엇을 할지가 정해진다.
  • 어드바이저(advisor) 라고도 한다.
  • 여러 객체에서 공통으로 적용되는 공통 관심 사항이다.
  • Singleton 형태의 객체로 존재.

 

Introduction

타깃 객체에 새로운 메서드나 속성을 추가하는 것.

 

Target

Advice가 적용될 객체이다. 즉, Advice가 적용되어야 할 메서드나 JoinPoint가 있는 객체를 말한다.
  • 핵심기능을 담고 있는 모듈로 타겟은 부가기능을 부여할 대상이 된다.

 

Proxy

Target 객체를 감싸고, Target 객체의 메서드 호출을 중간에서 가로채어 추가 로직을 실행할 수 있게 해주는 객체. AOP에서 프록시는 Advice의 적용과 관련된 중요한 역할을 수행한다.
  • Advice를 Target 객체에 적용하면 생성되는 객체
  • 클라이언트 객체 관점에서 보면 타깃 객체와 프록시 객체는 차이가 없음

 

Weaving

Aspect의 코드가 언제, 어디서 Target 객체의 코드에 삽입되는지를 결정하는 프로세스이다.
컴파일 시점, 클래스 로딩 시점, 런타임 시점 등에서 위빙이 발생할 수 있다.

즉, 타깃 객체에 에스펙트를 적용해서 새로운 프록시 객체를 생성하는 절차이다.

 

 

728x90
반응형

댓글