01. AOP가 필요한 이유
1. AOP(Aspect Oriented Programming)이란?
AOP란 관점 중심 프로그래밍의 약자로, 핵심 비지니스 로직과는 별개인 공통 기능을 하나의 모듈로 분리하여 관리할 수 있게 해주는 프로그래밍 패러다임을 의미한다. 즉, 관점 중심 프로그래밍이란 여러 계층 또는 컴포넌트에 걸쳐 반복적으로 나타나는 관심사를 하나의 모듈로 분리하여 관리하는 것을 뜻한다.
| 핵심 관심사 (Core Concerns) |
횡단 관심사 (Cross-Cutting Concerns) |
|
| 개념 | 본질적인 비지니스 로직 | 여러 모듈에서 공통적으로 적용되는 부가 기능 |
| 특징 | 특정 모듈이 달성해야 하는 고유한 목표 | 시스템 전반에 걸쳐 반복적으로 나타남 |
| 관리 방식 | 각 기능 별로 개별 관리 | 한 곳에서 집중 관리 |
| 코드의 위치 | 각 서비스나 컨트롤러 내부 | AOP 등을 통해 분리된 별도의 관점 |
| 예시 | 로그인, 상품 등록, 게시글 작성 등 | 로깅(Logging), 보안(Security), 트랜잭션 관리 등 |
2. AOP의 필요성
이러한 AOP는 분리된 별도의 공통 모듈을 필요한 핵심 로직에 자동으로 끼워넣어, 근본적으로 개발자가 핵심 로직에 집중할 수 있을 뿐만 아니라 코드가 지저분해지는 것을 방지한다.
| AOP의 이점 | |
| 코드 중복 최소화 | 흩어져있던 동일한 코드를 한 곳에서 관리함으로써 물리적으로 코드의 양을 줄임 |
| 유지 보수 최적화 | 분리된 관점 내에서 코드를 수정함으로써, 변화에 유연함 |
| 가독성 향상 | 비지니스 로직과 부가 기능을 분리함으로써, 전체적인 로직 파악이 수월해짐 |
3. 실제 애플리케이션 개발 사례
| 실제 AOP 사례 | AOP 지점 | |
| 트랜잭션 관리 | 메서드와 동시에 트랜잭션이 시작되며 정상 종료되면 커밋을, 예외가 발생하면 롤백을 수행 | 메서드 시작 / 끝 |
| 로깅 | 모든 컨트롤러의 메서드가 실행될 때마다 메서드의 이름과 파라미터를 로그로 남김 | 메서드 실행 직전 / 직후 |
| 보안 | 특정 API를 호출하기 전에, 사용자 권한을 확인하고 메서드 실행 유무를 결정함 | 메서드 실행 직전 / 직후 |
| 성능 모니터링 | 세밀한 제어를 통해 비지니스의 성능 병목 구간 찾기 가능 | 메서드 실행 전후 전체 |
02. MVC에서의 클라이언트 요청 처리 흐름
| @Controller | @RestController | |
| 주요 응답 | 뷰 (View) | 원시 데이터 (Data) |
| 응답 형식 | HTML / JSP | JSON / XML |
| 컨트롤러 반환 값 | 찾고자 하는 View의 이름 (String) | 응답 본문에 담길 객체나 데이터 |
| 동작 원리 | ViewResolver를 통해 화면 렌더링 | HttpMessageConverter를 통해 객체를 JSON으로 변환 |
| 추가 조건 | 데이터 응답 시 @ResponseBody 필요 | 모든 메서드에 자동으로 적용 |
| 주요 용도 | 전통적인 웹 페이지 제작 | REST API 서버 구축, 모바일 앱 / FE 통신 |
'[Codeit] > Spring 백엔드 10기 위클리페이퍼' 카테고리의 다른 글
| [08] DDL과 DML, 그리고 역정규화 (0) | 2026.04.05 |
|---|---|
| [07] 웹 API의 발전 과정과 HTTP 요청의 흐름 (0) | 2026.02.26 |
| [05] 웹 서버와 WAS, 그리고 Bean 등록 (0) | 2026.02.12 |
| [04] Spring Framework의 탄생 배경과 Java 라이브러리 (0) | 2026.02.05 |
| [03] HashSet, 그리고 O(n)과 O(logn) (0) | 2026.01.27 |