🐢 꼬부기 LV.1 | 개념•기초/💧물대포(핵심개념)

AOP 용어 정리

서화 2026. 1. 23. 12:41

📌스프링이란 무엇이냐

IoC와 AOP를 지원하는 경량의 프레임워크다

IoC = 제어의 역행

AOP = 관점 지향 프로그래밍

경량의 = POJO

클린코드란? 

유지보수가 용이한 코드 즉 높은 응집도와 낮은 결합도를 가지고 있는 코드를 말한다

IoC ▶ 낮은 결합도
AOP ▶ 높은 응집도


⭐AOP 용어 정리⭐

📌관심 분리

 Separation of Concerns

비즈니스 메서드마다 공통으로 존재하는 코드들로
이러한 코드들을 다른클래스에 작성하는것

예시)

햄버거 하나를 만들 때마다 직원이 이런 일을 전부 다 한다고 가정한다.

  • 패티 굽기
  • 빵에 넣기
  • 포장하기
  • 주문번호 출력하기
  • 결제 처리하기
  • 직원 권한 확인하기
  • 문제 생기면 환불 처리하기

이 상태는 햄버거 만드는 코드 안에, 가게 운영 코드가 전부 섞여 있는 상태다.

즉 “햄버거를 어떻게 만들지” 와 “가게를 어떻게 운영할지”라는 서로 다른 관심사를 분리하는것이다


📌횡단 관심

Crossing Concerns

비즈니스 메서드마다 공통으로 존재하는 코드들로
로깅, 트랜잭션,인증.인가, 예외 처리에 사용하고
어드바이스,공통 로직이라고 부르기도한다

예시)

모든 주문에 공통으로 따라오는 가게 운영 작업

  • 주문번호 출력
  • 결제 처리
  • 직원 권한 확인
  • 문제 발생 시 환불 처리

햄버거 종류가 달라도 이 작업들은 항상 동일하게 필요하다


📌핵심 관심

Core Concern

비즈니스메서드,조인포인트,CRUD 라고 부르기도 한다

예시 )

👉 햄버거를 실제로 만드는 일

  • 패티 굽기
  • 빵에 넣기
  • 재료 조합
  • 포장하기

이것들이 없으면 햄버거 가게 자체가 성립하지 않는다
즉, 서비스의 본질이다

⭐ 횡단관심과 핵심관심은 서로 다른 역할의 관심사를 가지고 있고,

⭐횡단관심과 핵심관심이 합쳐져서 하나의 서비스가 생긴다 따라서 응집도를 높이는 행위


📌조인포인트

 JoinPoint

Pointcut의 후보다

📌포인트컷

Pointcut

선택된 조인포인트를 말한다 즉 선택된 비즈니스 메서드를 의미하고

어떤 횡단관심사가 이러한 서비스에 불려야되 하고 선택 됬을때를 의미한다

예시)

예를 들어 이런 정책을 정했다고 가정한다.

  • 주문번호 출력 → 주문이 들어올 때만
  • 결제 처리 → 조리 시작 전에만
  • 환불 처리 → 조리 중 에러 발생 시만

이렇게 “이 시점에만 실행하자”라고 정한 지점


📌 어드바이스

 Advice

횡단 관심

비즈니스 메서드마다 공통으로 존재하는 코드들로
동작시점이라는 개념이 존재함 횡단관심사가 언제 끼어드느냐를 정할수 있음
동작시점이 중요하다

예시)

👉 선택된 시점에 실행되는 실제 공통 작업

  • “주문번호 출력해라”
  • “결제 진행해라”
  • “직원 권한 확인해라”

이 동작 자체가 어드바이스다.

그리고 어드바이스는

  • 조리 전
  • 조리 후
  • 에러 발생 시

처럼 언제 실행되는지가 중요


📌위빙

 Weaving

포인트컷으로 지정한 핵심관심 메서드가 호출 될때 어드바이스에 해당하는 횡단 관심 메서드가 삽입되는것

스프링에서는 런타임 위빙처리만 한다 즉 실행/호출시에만 위빙처리를 하기때문에 미리 처리하지 않는다

예시)

주문이 들어오는 순간, 시스템이 자동으로

  • 주문번호 출력
  • 결제 처리

를 실행한다.

햄버거 직원은 “언제 주문번호 찍히는지”를 신경 쓰지 않는다.


📌에스팩트

 Aspect

포인트컷과 어드바이스의 결합으로 어드바이저라고 부르기도 한다

 스프링프레임워크가  에스펙트 설정에 따라 위빙을 처리한다

예시)

예를 들면 이렇게 한 덩어리다.

  • "주문이 들어오면 → 주문번호를 출력한다"
  • "조리 시작 전에 → 결제를 처리한다"