모음/[스프링 퀵스타트]

[스프링 퀵스타트] Day2 - chapter2. 스프링 AOP 용어 및 기본 정리 (v2024)

ttoance 2024. 10. 28. 17:17

Chapter 2. AOP 용어 및 기본 정리

AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 공통적인 기능을 핵심 로직에서 분리해 유지보수를 쉽고 코드의 가독성을 높이는 방법입니다. 이번 포스팅에서는 AOP의 기본 용어와 이를 이해하는 데 필요한 핵심 개념을 정리하겠습니다.


1. AOP의 핵심 용어 정리

  1. 조인포인트(JoinPoint)
    • 클라이언트가 호출하는 모든 비즈니스 메서드가 조인포인트가 될 수 있습니다.
    • AOP를 적용할 수 있는 지점으로, 메서드 호출뿐 아니라 예외 처리와 같은 다양한 지점이 포함됩니다.
  2. 포인트컷(Pointcut)
    • 특정 조건에 맞는 조인포인트를 필터링한 결과입니다.
    • AOP가 적용될 메서드나 클래스를 지정할 수 있습니다.
    • 포인트컷 표현식을 사용해 메서드의 실행 시점에 적용할 로직을 정의합니다.
  3. 어드바이스(Advice)
    • AOP가 적용될 때 수행될 공통 기능입니다.
    • 예: 로깅, 트랜잭션 처리 등.
    • 종류:
      • Before: 메서드 실행 전 호출
      • After: 메서드 실행 후 호출
      • After-returning: 정상적으로 반환된 후 호출
      • After-throwing: 예외 발생 후 호출
      • Around: 메서드 실행 전후를 모두 처리
  4. 위빙(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를 잘 활용하면 프로젝트의 코드 품질을 높이고, 개발자의 생산성을 향상시킬 수 있습니다

반응형