개념 | 설명 |
---|---|
AOP (Aspect-Oriented Programming) | 공통 기능(횡단 관심사, Cross-Cutting Concern)을 핵심 로직에서 분리하여 재사용성과 유지보수를 향상시키는 기법 |
OOP (Object-Oriented Programming) | 핵심 비즈니스 로직 중심, 클래스 단위로 기능 분리 |
응집도 | AOP는 높은 응집도 유지에 도움 |
결합도 | IoC/DI는 낮은 결합도 유지에 도움 |
관심사 유형 | 설명 | 예시 |
---|---|---|
핵심 관심사 (Core Concern) | 비즈니스의 본질적 로직 | insert, update 등 CRUD, 상품 구매 처리 등 |
횡단 관심사 (Cross-Cutting Concern) | 공통적으로 반복되는 부가 기능 | 로깅, 트랜잭션, 예외처리, 권한 검사 등 |
서비스 메서드 = 핵심 관심사 + 횡단 관심사
용어 | 설명 |
---|---|
Advice | 공통 로직(로깅, 트랜잭션 등)을 담고 있는 코드 (Before, After, Around) |
Pointcut | 어떤 메서드에 Advice를 적용할지 결정하는 표현식 |
Joinpoint | 클라이언트가 호출할 수 있는 메서드(ex. 비즈니스 메서드) |
Aspect | Pointcut + Advice 의 결합 객체 |
Weaving | Advice를 Joinpoint에 적용하는 행위 (Spring은 런타임 위빙 지원) |
쿠키를 충전하고 웹툰을 대여하는 복합 작업