AOP

supway·2022년 9월 21일
0

Tech

목록 보기
1/7

AOP (Aspect - Oriented Programming)

  • AOP란?
    => 여러 오브젝트에 나타나는 공통적인 부가 기능을 모듈화하여 재사용하는 기법

    ex) 성능 검사, 트랜잭션 처리, 로깅 등

  • 서비스에서는 비즈니스 로직(핵심 기능)만 수행되는 것이 좋다. 인프라 로직은 따로 빼서 AOP를 적용

  • AOP를 사용하지 않을 때 문제점

  1. 중복코드를 발생시키고 유지보수가 힘들어진다.
  2. 비즈니스 로직을 이해하기 어렵게 만듦

    ex) 시간 측정을 하는 기능을 여러 메서드에 적용을 시켜야 할때 그 대상 메서드가 수 억개라면 수작업으로 하기에는 비효율적이다.
    => 해결방안으로 AOP 적용이 존재

AOP 용어

  • Target : 부가 기능이 적용될 대상 ( 어떤 대상에 부가 기능을 적용할 것인가 )

  • Advice : 어떤 부가 기능을 언제 사용할지에 대한 정의

    ex)
    @Before : 메서드가 실행되기 전에 실행
    @AfterReturning : 메서드가 정상적으로 실행되었을 때 실행
    @AfterThrowing : 메서드가 예외를 발생시켰을 때 실행
    @After : @AfterReturning + @AfterThrowing
    @Around : 비즈니스 로직 전후로 실행

  • JoinPoint : 어드바이스가 적용될 수 있는 위치 ( 어디에 적용할 것인가)

    ex) 메서드, 필드, 객체, 생성자 등
    Spring AOP의 경우 메서드 호출 할때만 가능
    => 이유 : 프록시 기반의 AOP 이기 때문에

  • Point cut : Advice를 적용할 JoinPoint를 선별하는 작업
    원하는 메서드를 선택해서 적용할 수 있음

AOP의 구현 방법

  • 컴파일 => J.java -> J.class
    : J.java라는 클래스를 J.class 라는 파일로 컴파일 하는 시점에 AOP 적용

  • 클래스 로드시 => J.class를 컴파일해서 클래스 로더가 메모리 상에 올릴 때 적용

  • 프록시 패턴 => J라는 어떤 타겟 클래스를 프록시로 감싸서 부가 기능을 제공하는 프록시로 감싸서 실행을 하는 방식
    (Spring에서 IoC와 DI를 기반으로 하기 때문에 가능함)


우아한Tech의 테코톡(제이,뚱이님의 Spring AOP)을 참조하였습니다.

profile
개발잘하고싶은사람

0개의 댓글

관련 채용 정보