📌스프링이란 무엇이냐
IoC와 AOP를 지원하는 경량의 프레임워크다
IoC = 제어의 역행
AOP = 관점 지향 프로그래밍
경량의 = POJO
클린코드란?
유지보수가 용이한 코드 즉 높은 응집도와 낮은 결합도를 가지고 있는 코드를 말한다
IoC ▶ 낮은 결합도
AOP ▶ 높은 응집도
⭐AOP 용어 정리⭐
📌관심 분리
Separation of Concerns
비즈니스 메서드마다 공통으로 존재하는 코드들로
이러한 코드들을 다른클래스에 작성하는것
예시)
햄버거 하나를 만들 때마다 직원이 이런 일을 전부 다 한다고 가정한다.
- 패티 굽기
- 빵에 넣기
- 포장하기
- 주문번호 출력하기
- 결제 처리하기
- 직원 권한 확인하기
- 문제 생기면 환불 처리하기
이 상태는 햄버거 만드는 코드 안에, 가게 운영 코드가 전부 섞여 있는 상태다.
즉 “햄버거를 어떻게 만들지” 와 “가게를 어떻게 운영할지”라는 서로 다른 관심사를 분리하는것이다
📌횡단 관심
Crossing Concerns
비즈니스 메서드마다 공통으로 존재하는 코드들로
로깅, 트랜잭션,인증.인가, 예외 처리에 사용하고
어드바이스,공통 로직이라고 부르기도한다
예시)
모든 주문에 공통으로 따라오는 가게 운영 작업
- 주문번호 출력
- 결제 처리
- 직원 권한 확인
- 문제 발생 시 환불 처리
햄버거 종류가 달라도 이 작업들은 항상 동일하게 필요하다
📌핵심 관심
Core Concern
비즈니스메서드,조인포인트,CRUD 라고 부르기도 한다
예시 )
👉 햄버거를 실제로 만드는 일
- 패티 굽기
- 빵에 넣기
- 재료 조합
- 포장하기
이것들이 없으면 햄버거 가게 자체가 성립하지 않는다
즉, 서비스의 본질이다
⭐ 횡단관심과 핵심관심은 서로 다른 역할의 관심사를 가지고 있고,
⭐횡단관심과 핵심관심이 합쳐져서 하나의 서비스가 생긴다 따라서 응집도를 높이는 행위다
📌조인포인트
JoinPoint
Pointcut의 후보다
📌포인트컷
Pointcut
선택된 조인포인트를 말한다 즉 선택된 비즈니스 메서드를 의미하고
어떤 횡단관심사가 이러한 서비스에 불려야되 하고 선택 됬을때를 의미한다
예시)
예를 들어 이런 정책을 정했다고 가정한다.
- 주문번호 출력 → 주문이 들어올 때만
- 결제 처리 → 조리 시작 전에만
- 환불 처리 → 조리 중 에러 발생 시만
이렇게 “이 시점에만 실행하자”라고 정한 지점
📌 어드바이스
Advice
횡단 관심
비즈니스 메서드마다 공통으로 존재하는 코드들로
동작시점이라는 개념이 존재함 횡단관심사가 언제 끼어드느냐를 정할수 있음
동작시점이 중요하다
예시)
👉 선택된 시점에 실행되는 실제 공통 작업
- “주문번호 출력해라”
- “결제 진행해라”
- “직원 권한 확인해라”
이 동작 자체가 어드바이스다.
그리고 어드바이스는
- 조리 전
- 조리 후
- 에러 발생 시
처럼 언제 실행되는지가 중요
📌위빙
Weaving
포인트컷으로 지정한 핵심관심 메서드가 호출 될때 어드바이스에 해당하는 횡단 관심 메서드가 삽입되는것
스프링에서는 런타임 위빙처리만 한다 즉 실행/호출시에만 위빙처리를 하기때문에 미리 처리하지 않는다
예시)
주문이 들어오는 순간, 시스템이 자동으로
- 주문번호 출력
- 결제 처리
를 실행한다.
햄버거 직원은 “언제 주문번호 찍히는지”를 신경 쓰지 않는다.
📌에스팩트
Aspect
포인트컷과 어드바이스의 결합으로 어드바이저라고 부르기도 한다
스프링프레임워크가 에스펙트 설정에 따라 위빙을 처리한다
예시)
예를 들면 이렇게 한 덩어리다.
- "주문이 들어오면 → 주문번호를 출력한다"
- "조리 시작 전에 → 결제를 처리한다"
'🐢 꼬부기 LV.1 | 개념•기초 > 💧물대포(핵심개념)' 카테고리의 다른 글
| 어드바이스 사용해보기 (0) | 2026.01.26 |
|---|---|
| AOP 설정 및 사용 (0) | 2026.01.23 |
| 스프링부트에서 데이터 주고 받기 (0) | 2026.01.19 |
| 스프링부트 맛보기 (0) | 2026.01.18 |
| 실제 스프링의 이해 (0) | 2026.01.17 |