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 |