
💡핵심 관심사와 횡단 관심사에 대한 관점들로 프로그램을 분해하여 객체 지향이 추구하는 모듈을
효과적으로 지원하도록하는 프로그래밍 기법을 의미
| 핵심 기능 | 공통 기능 |
|---|---|
| • 비즈니스 로직에 대한 관심사 • 애플리케이션 로직이 제공하는 고유의 업무 로직 | • 핵심 관심사를 보조하기 위해 제공되는 기능 • 로그, 보안, 트랜잭션 기능 등 • 단독으로 사용되지 않고 핵심 기능과 함께 사용 |
| 강의 프로세스 | 쇼핑 프로세스 |
|---|---|
| 1. 출석 확인 2. 강의 진행 3. 중간고사 및 기말고사 4. 성적 처리 | 1. 쇼핑할 물건 고르기 2. 장바구니 담기 3. 결제하기 4. 영수증 받기 |
| 핵심 관심사(Core Concerns) | 횡단 관심사(Cross-cutting Concerns) |
|---|---|
| • 각각의 강의가 가지고 있는 독특한 내용과 각각에 맞춘 평가 방식 • 알고리즘 강의의 알고리즘 문제 풀이 • 데이터베이스 강의의 데이터베이스 설계 | • 모든 강의에서 공통적으로 필요하지만, 각각의 핵심 내용과는 직접적인 관련이 없는 활동들을 의미 • 이러한 활동들은 모든 강의에 걸쳐 일관되게 발생 • 각 강의의 주된 목표를 달성하기 위해 필수적이지만 보조적인 역할을 수행 |
![]() | ![]() |
| • 옷의 사이즈나 색상이 나와 잘 맞는 지 피팅하기 • 구매하려는 가구가 실측된 공간에 맞는 지 사이즈를 확인하기 • 구매하려는 책이 내가 원하는 주제나 방향성이 맞는지 확인하기 | • 모든 쇼핑에서 공통적으로 필요하지만, 각각의 핵심 내용과는 직접적인 관련이 없는 활동들을 의미 |
![]() | ![]() |
1. 유지보수성 향상
2. 코드 재사용성 증가
3. 테스트 용이성
4. 에러 추적과 디버깅 용이성
5. 시스템의 확장성 향상
6. 명확한 책임 분리
Aspect
- 핵심 기능에서 분리한 부가 기능과, 이를 어디에 적용할 지를 정의한 것
- 횡단 관심사를 구현하는 코드를 캡슐화하는 역할
Advice와Point cut포함Advice
Aspect에서 정의되는 메소드- 횡단 관심사를 구현하는 실제 코드를 담고 있음
- Before, After, Around 등 다양한 종류가 존재함
Join Point
Aspect가 적용될 수 있는 특정 지점- 메서드 실행, 필드 접근, 객체 생성 등 다양한 시점에 발생
- AOP 프레임워크에서 제공

관점 지향 프로그래밍은
➡️ 공통 기능(트랜잭션, 로그, 보안 등)을 비즈니스 로직에서의 관점을 바탕으로 분리하여 객체 지향 프로그래밍 방식의 불필요한 반복을 해결하기 위한 방법
- 부가 기능이 불특정 다수의 여러 곳에 작성되는 경우를 방지
- 부가 기능 수정 시 사용된 모든 클래스를 수정하는 것이 아닌 하나로 관리할 수 있게 해줌