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 |