2023.02.22

김근호·2023년 2월 21일
1

Spring

목록 보기
8/9

AOP

  • Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
  • '핵심기능': 각 API 별 수행해야 할 비즈니스 로직
    ex) 상품 키워드 검색, 관심상품 등록, 회원 가입, 관심상품에 폴더 추가, ....
    • '부가기능': 핵심기능을 보조하는 기능
      ex) 회원 패턴 분석을 위한 로그 기록, API 수행시간 저장

  • 문제점
    • 모든 '핵심기능'의 Controller 에 '부가기능' 코드를 추가했을 때..
      • '핵심기능' 이 100개라면??
        • 100개의 '핵심기능' 모두에 동일한 내용의 코드 추가 필요
    • '핵심기능' 수정 시
      • 같은 함수 내에 '핵심기능'과 '부가기능'이 섞여 있음
      • '핵심기능' 이해를 위해 '부가기능'까지 이해 필요
    • '부가기능'의 변경이 필요하다면??
      • '핵심기능'의 개수만큼 '부가기능'도 수정해 줘야 함
      • '부가기능' 삭제
  • 부가기능을 모듈화
    - AOP (Aspect Oriented Programming) 를 통해 부가기능을 모듈화
    - '부가기능'은 '핵심기능'과는 관점(Aspect), 관심이 다름
    - 따라서 '핵심기능'과 분리해서 '부가기능' 중심으로 설계, 구현 가능
  • 스프링이 제공하는 AOP

Spring AOP 이해

개념적 이해

스프링 실제 동작

시퀀스 다이어그램 (Sequence Diagram)

AOP 적용 전

AOP 적용 후

profile
앞만 보고 나아가자!

0개의 댓글