본문 바로가기

Web/Spring

[ Spring ] ③ AOP

# 1. AOP란?

(1) AOP(Aspect-Oriented Programming); 관점 지향 프로그래밍

  • AOP란? 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다.
  • 관점 지향 프로그래밍을 이용해서 주 기능과 보조기능을 분리해서 메소드에 적용.

 

  • AOP를 적용해야하는 이유
    • 주기능을 위해서 보조 기능(로깅, 보안, 트랜재션) 들을 일일히 구현해야 한다.
    • 규모가 있는 웹 애플리케이션일 경우 클래스의 메소드마다 이런 작업을 일일히 수작업으로 하기에서는 시간이 많이 걸리고 소스 코드도 복잡해진다. 즉, 유지보수의 어려움이 있다.

주기능과 보조 기능 분리

 

# 2. 스프링에서 AOP 기능 사용하기

(1) AOP 관련 용어

용어 설명
aspect 구현하고자 하는 보조 기능을 의미함
advice aspect의 실제 구현체(클래스)를 의미, 메소드 호출을 기준으로 여러 지점에서 실행됨.
joinpoint advice를 적용하는 지점을 의미, 스프링은 method 결합점만 제공.
pointcut advice가 적용되는 대상을 지정, 패키지 이름/ 클래스 이름/ 메소드 이름을 정규식으로 지정하여 사용
target advice가 적용되는 클래스 의미
weaving advice를 주기능에 적용하는 것을 의미

 

(2) 스프링 프레임워크에서 AOP 기능을 구현하는 방법

  • 스프링 프레임워크에서 제공하는 API이용

AOP 기능 구현 과정

 

  • @Aspect 애노테이션 이용

 

References

  1. 자바 웹을 다루는 기술
  2. 관점 지향 프로그래밍, link