Chapter 2. AOP 용어 및 기본 정리
AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 공통적인 기능을 핵심 로직에서 분리해 유지보수를 쉽고 코드의 가독성을 높이는 방법입니다. 이번 포스팅에서는 AOP의 기본 용어와 이를 이해하는 데 필요한 핵심 개념을 정리하겠습니다.
1. AOP의 핵심 용어 정리
- 조인포인트(JoinPoint)
- 클라이언트가 호출하는 모든 비즈니스 메서드가 조인포인트가 될 수 있습니다.
- AOP를 적용할 수 있는 지점으로, 메서드 호출뿐 아니라 예외 처리와 같은 다양한 지점이 포함됩니다.
- 포인트컷(Pointcut)
- 특정 조건에 맞는 조인포인트를 필터링한 결과입니다.
- AOP가 적용될 메서드나 클래스를 지정할 수 있습니다.
- 포인트컷 표현식을 사용해 메서드의 실행 시점에 적용할 로직을 정의합니다.
- 어드바이스(Advice)
- AOP가 적용될 때 수행될 공통 기능입니다.
- 예: 로깅, 트랜잭션 처리 등.
- 종류:
- Before: 메서드 실행 전 호출
- After: 메서드 실행 후 호출
- After-returning: 정상적으로 반환된 후 호출
- After-throwing: 예외 발생 후 호출
- Around: 메서드 실행 전후를 모두 처리
- 위빙(Weaving)
- 어드바이스가 대상 코드에 결합되는 과정을 의미합니다.
- 컴파일 시점, 로드 시점, 런타임에 위빙이 이루어질 수 있습니다.
2. AOP 설정의 이해 (XML 예시)
AOP는 스프링 컨테이너를 통해 실행 시점에 공통 기능이 주입됩니다. 아래는 XML 설정을 통한 AOP 구성의 간단한 예시입니다.
<aop:config>
<aop:pointcut id="allPointcut"
expression="execution(* com.example..*Service.*(..))" />
<aop:aspect ref="loggingAspect">
<aop:before pointcut-ref="allPointcut" method="logBefore" />
<aop:after pointcut-ref="allPointcut" method="logAfter" />
</aop:aspect>
</aop:config>
- allPointcut: 특정 패키지의 모든 Service 클래스 메서드에 AOP 적용.
- loggingAspect: logBefore와 logAfter 메서드를 통해 메서드 실행 전후에 로깅 수행.
3. AOP의 장점과 활용
- 관심사의 분리: 핵심 로직과 공통 로직을 분리해 코드의 가독성을 높입니다.
- 재사용성 증가: 공통 로직(예: 로깅, 트랜잭션)을 여러 클래스에서 재사용할 수 있습니다.
- 유지보수성 향상: 비즈니스 로직과 부가 기능이 분리되므로 코드 유지보수가 용이합니다.
결론
✔️ AOP는 코드 응집도를 높이고 유지보수를 쉽게 만드는 강력한 도구입니다.
✔️ 어드바이스와 포인트컷을 적절히 활용해 메서드 실행 전후의 로직을 쉽게 처리할 수 있습니다.
✔️ 위빙을 통해 런타임 시점에 공통 기능을 유연하게 적용할 수 있습니다.
AOP를 잘 활용하면 프로젝트의 코드 품질을 높이고, 개발자의 생산성을 향상시킬 수 있습니다
반응형
'모음 > [스프링 퀵스타트]' 카테고리의 다른 글
[스프링 퀵스타트] Day2 - chapter3. 어드바이스 동작 시점 (0) | 2024.11.01 |
---|---|
[스프링 퀵스타트] Day2 - chapter1. 스프링 AOP (v2024) (1) | 2024.10.06 |
[스프링 퀵스타트] Day1 - chapter5. 어노테이션 기반 설정 (v2024) (0) | 2024.10.05 |
[스프링 퀵스타트] Day1 - chapter4. 의존성 주입 (v2024) (0) | 2024.10.01 |
[스프링 퀵스타트] Day1 - chapter3. 스프링 컨테이너 및 설정 (v2024) (0) | 2024.09.28 |