[Codeit]/Spring 백엔드 10기 위클리페이퍼

[06] AOP와 MVC

uzlru 2026. 2. 26. 19:00

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 통신