Jin's Dev Story

[SpringBoot] AOP(Aspect Oriented Programming) 본문

Web & Android/SpringBoot

[SpringBoot] AOP(Aspect Oriented Programming)

woojin._. 2023. 8. 12. 13:35

AOP

  • 관점 지향 프로그래밍
  • 기존 OOP를 더욱 보완, 확장하여  OOP를  OOP답게 사용할 수 있도록 도와주는 개념
  • 공통 모듈을 분리시켜 해당 소스코드가 외부의 다른 클래스에서 존재하는 것
  • 사용 이유 : 비즈니스 로직과 공통 기능으로 구분을 하고, 공통 기능은 필요한 시점에 불러와서 적용하는 프로그래밍 방법

Web Layer

  • REST API를 제공하며, Client 중심의 로직 적용

Business Layer

  • 내부 정책에 따른 logic을 개발하며, 주로 해당 부분을 개발

Data Layer

  • 데이터 베이스 및 외부와의 연동을 처리

장점

  • 중복 코드 사라짐
  • 코드 간결 및 유지보수 쉬움
  • 재활용성 높아짐

Core Concern(핵심 관심) : 각 서비스의 핵심 비즈니스 로직.   i.e. 계좌이체, 입출금, 이자계산

Crosscut Concern(횡단 관심) : 공통 모듈.   i.e. 로깅, 보안, 트랜잭션

 

AOP의 구성요소

  • JointPoint : Crosscut Concern(횡단 관심)을 삽입할 시점(when)
  • PointCut : 어떤 클래스의 어떤 함수에 삽입할건지. 삽입할 위치(where)
  • Aspect : JointPoint(when) + PointCut(where)
  • Advice : 무엇(what)을 삽입할건지
  • Weaving : Aspect(when + where) + Advice(what). 위빙을 통해 지정된 객체를 새 Proxy 객체로 생성
  • Proxy : Crosscut Concern(횡단 관심)이 Core Concern(핵심 관심)에서 직접 실행되지 않고 Proxy(대리인)을 생성해 실행.
  • Before : 메서드 실행하기 이전
  • After : 메서드가 성공적으로 실행 후, 예외가 발생 되더라도 실행
  • AfterReturing : 메서드 호출 성공 실행 시 (Not Throws)
  • AfterThrowing : 메서드 호출 실패 예외 발생 (Throws)
  • Around : Before / after 모두 제어

'Web & Android > SpringBoot' 카테고리의 다른 글

[SpringBoot] WAS와 WS  (0) 2023.08.15
[SpringBoot] Design Pattern  (0) 2023.08.14
[SpringBoot] OOP(Object Oriented Programming)  (0) 2023.08.12
[SpringBoot] IoC &DI  (0) 2023.08.12
[SpringBoot] Spring Boot  (0) 2023.08.12