SpringBoot 입문(6) - AOP (Aspect Oriented Programming)

김정욱·2021년 2월 9일
0
post-thumbnail

AOP

  • Aspect Oriented Programming의 약자 (관점 지향 프로그래밍)
  • 관심 사항 분리
    1) 공통 관심 사항(cross-cutting concern) : 공통으로 필요한 사항
    2) 핵심 관심 사항(core concern) : 실제 중요 비즈니스 로직

[ 사용 상황 ]

  • 만약 내가 만든 모든 메소드의 실행시간을 알아야 한다면?
    1) 모든 메소드에 각각 시간 측정 로직 추가 --> 비효율적!!
    2) AOP를 활용한 공통 적용 --> 매우 효율적!

[ 사용 예시 ]

  • 모든 메소드에 적용하는 것 처럼 Target 지정 가능!
    @Around("execution(* hello.hellospring..*(..))")
  • return joinPoint.proceed();
    : 마치 미들웨어에서 next()하듯 넘겨준다.
  • 실제로 사용하게 되면 지정된 target은
    가상으로 하나 만들어진 후 가상의 file
    을 거치게 됨
  • 실행 결과

[ 원리 ]

  • Proxy(프록시)를 통해서 공통 관심 사항을 수행한 후 핵심 관심 사항을 수행하게 하는 원리
  • 가상의 파일을 하나 만들어 공통 사항을 수행하게 하는 것!
  • 만약 바로 DI(의존성 주입)가 없었다면 해당 기능은 구현이 불가능했을 것임!!
profile
Developer & PhotoGrapher

0개의 댓글