본문 바로가기

Spring Boot

Spring AOP가 필요한 이유

Spring AOP(Aspect Oriented Programming)

 

AOP는 기존에 Java 등에서 사용하던 객체 지향 프로그래밍(OOP, Object Oriented Programming)의 부족한 부분을 보조하기 위해 개발되었다.

 

*

OOP는 공통된 목적을 가진 데이터와 동작을 묶어 하나의 객체로 정의하는 것

객체를 적극적으로 활용해서 기능을 재사용 할 수 있음

관심사의 분리(SoC, Separation of Concerns) 디자인 원칙을 준수함

 

Spring AOP는 코드 중복을 줄이고 유지보수성을 향상시키기 위해 필요하다.

구체적으로는 AOP를 사용해 횡단 관심사를 핵심 비즈니스 로직과 분리하여 모듈화할 수 있다.

* 횡단 관심사 : 로깅, 보안, 트랜잭션 관리 등 여러 모듈이나 클래스에 걸쳐 반복적으로 사용되는 기능

 

1) 코드 중복 제거

여러곳에서 동일하거나 비슷한 로직이 반복되면 AOP를 활용해 해당 로직을 한 곳에 모듈화하고 재사용 가능

2) 유지 보수성 향상

횡단 관심사를 분리하여 관리해서 특정 기능의 변경이 필요한 경우 해당 기능과 관련된 코드만 수정되면 되니까 유지보수가 용이함

3) 핵심 비즈니스 로직 집중

개발자는 횡단 관심사를 처리하는 코드 대신 핵심 비즈니스 로직에만 집중할 수 있음

 

AOP 사용 예시

로깅 : 메서드 실행 전후에 로그를 기억해서 시스템의 동작을 추적함

보안 : 권한 확인, 인증 등 보안 관련 로직 구현

트랜잭션 관리 : DB 트랜잭션을 시작, 커밋, 롤백하는 로직 처리

캐싱 : 자주 사용되는 데이터를 캐시에 저장해서 성능 향상

시간 측정 : 메서드 실행 시간을 측정해서 성능 분석에 활용함

 

AOP 관련 용어

Aspect(관점) : 횡단 관심사를 모듈화한 단위

Joint Point(결합 지점) : AOP가 적용될 수 있는 지점(메서드 호출, 예외 발생 등)

Advice(조언) : 횡단 관심사 로직 그 자체를 의미. Before, After, Around 등의 형태로 적용됨

Pointcut(포인트컷) : AOP가 적용될 Joint point를 선택하는 규칙

Target(타겟) : AOP가 적용될 객체

Weaving(위빙) : 관점(Aspect)을 타겟(Target)에 적용하는 과정을 의미함

 

 

'Spring Boot' 카테고리의 다른 글

서블릿(Servlet)  (2) 2025.07.01
HTTP 프로토콜 기초  (3) 2025.07.01
DTO  (2) 2025.06.26
Web Server와 Web Application Server, 그리고 내장 Tomcat에 대해  (0) 2025.06.24
Spring 연습예제 1  (0) 2025.06.24