🔷 AOP(관점 지향 프로그래밍) 개념 정리

개념 설명
AOP (Aspect-Oriented Programming) 공통 기능(횡단 관심사, Cross-Cutting Concern)을 핵심 로직에서 분리하여 재사용성과 유지보수를 향상시키는 기법
OOP (Object-Oriented Programming) 핵심 비즈니스 로직 중심, 클래스 단위로 기능 분리
응집도 AOP는 높은 응집도 유지에 도움
결합도 IoC/DI는 낮은 결합도 유지에 도움

🔷 AOP에서 분리하는 관심사

관심사 유형 설명 예시
핵심 관심사 (Core Concern) 비즈니스의 본질적 로직 insert, update 등 CRUD, 상품 구매 처리 등
횡단 관심사 (Cross-Cutting Concern) 공통적으로 반복되는 부가 기능 로깅, 트랜잭션, 예외처리, 권한 검사 등

서비스 메서드 = 핵심 관심사 + 횡단 관심사

🔷 AOP 용어 정리

용어 설명
Advice 공통 로직(로깅, 트랜잭션 등)을 담고 있는 코드 (Before, After, Around)
Pointcut 어떤 메서드에 Advice를 적용할지 결정하는 표현식
Joinpoint 클라이언트가 호출할 수 있는 메서드(ex. 비즈니스 메서드)
Aspect Pointcut + Advice 의 결합 객체
Weaving Advice를 Joinpoint에 적용하는 행위 (Spring은 런타임 위빙 지원)

🔷 트랜잭션 예시

쿠키를 충전하고 웹툰을 대여하는 복합 작업

🔷 핵심 요약

🔷 Spring AOP 설정 흐름

1. applicationContext.xml에 설정