SPRING BASIC_05 :: AOP

Dev-O·2021년 9월 13일
1

Spring

목록 보기
5/11

ASPECT ORIENTED PROGRAMING


📌 AOP

  1. 여러객체에 공통적인 기능과 핵심적인 기능을 구분
  2. 재사용성을 높임
  3. 핵심기능의 수정없이 공통 기능을 적용할 수 있다.
  4. 핵심기능에 공통기능을 삽입

📌 구현방법

  1. 컴파일 시점에 코드에 공통기능 추가
  2. 클래스 로딩 시점에 바이트 코드에 공통기능 추가
  3. 런타임에 프록시 객체를 생성하여 공통기능을 추가
    • 스프링은 이 방법을 제공

스프링 AOP는 프록시 객체를 자동으로 생성

공통기능을 구현한 클래스만 알맞게 구현


📌 AOP용어

  1. JoinPoint : Advice를 적용 가능한 지점. 스프링은 프록시를 사용하므로 메서드 호출 부분을 지칭
  2. Pointcut : JoinPoint에서 실제 Advice가 적용되는 JoinPoint 정규표현식이나 AspectJ의 문법으로 Pointcut을 정의
  3. Advice : 공통관심기능을 언제 핵심 로직에 적용할 것인지 정의
  4. Weaving : Advice를 핵심로직 코드에 적용하는 것
  5. Aspect : 여러 객체에 공통으로 적용되는 기능

📌 Adivce 종류

  1. Before : 대상객체의 메서드 호출 전
  2. AfterReturning : 대상객체의 메서드가 익셉션 없이 실행된 이후
  3. AfterThrowing : 대상객체의 메서드를 실행 중 익셉션이 발생한 경우
  4. After : 익셉션과 상관없이 메서드 실행 후
  5. Around : 메서드 실행 전, 후, 익셉션 발생시 모든 상황

📌 스프링 AOP구현 예제

팩토리얼 구하기
재귀함수 팩토리얼
반복문 팩토리얼
수행시간을 Around Advice로 구해보자

  1. 공통기능 인터페이스

  2. 반복문 팩토리얼(핵심기능)

  3. 재귀함수 팩토리얼(핵심기능)

  4. AOP기능을 할 Aspect클래스(핵심기능 사이로 시스템시간을 받아온다(start, end). 이후 end-start로 수행시간을 구함(Around 사용))

  1. 메인에서 실행

  2. xml설정

profile
Being Outstanding needs Understanding🚀

0개의 댓글