티스토리 뷰

반응형

스프링 AOP: 개념 소개

스프링 AOP란

AOP란,

  • 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법
  • OOP를 더 잘하게끔 도와주는 것이다.

 

그림을 통해 살펴보자

image

  • 그려진 선들은 각각의 Concems을 칭한다.
    • Concems란, 비슷한 코드들을 말하는 데, 예를 들면 트랜잭션 처리나 로깅 처리 하는 것들을 일컬어 말하는 것이다.
  • 비슷한 코드 즉, Concems들이 각각 클래스에 배치 되는데 이것들이 만약 수정이 필요하게 되면 우리는 각각의 클래스에 소스코드를 모두 수정해야하는 비효율적인 작업을 해야한다.
  • 결과적으로 유지보수하는데 쉽지가 않다.
  • 그래서 AOP는 이런 문제를 Aspect를 활용해서 해결한다. 즉, 흩어져있는 Concems를 한곳에 모으는 것이다.

 

AOP가 Aspect를 활용

image

  • 각 Concems(색의 띠)를 Aspect 안에다가 독립적으로 적용하고 이것을 어떤 클래스에서 사용할 것인 지 입력하는 것이다.
  • 즉, 해야할 일과 그 일을 어디어디에서 할 것인지를 묶어서 Aspect에 모듈화 한 것이 AOP이다.

 

AOP 용어

  • Aspect : 해야할 일들(Concems)을 묶은 것
    • Advice : 해야할 일들(Concems)
    • PointCut : 어디에 적용할 것인지(어떤 클래스 혹은 어떤 메소드에 적용할 것인지)
      • Ex. A 클래스의 foo 메소드에 적용한다.
  • Target : 적용이 되는 대상(각 클래스)
  • Join Point : 메소드 실행 시점
    • 즉, 메소드를 실행할 때 그 지점에 Advice를 끼워넣어라. 끼워 넣을 수 있는 지점을 Join Point라 칭한다

 

AOP 적용 방법

A, B, C 클래스(Bean)의 Concems들을 모듈화한 후 어떻게 적용하느냐?! 적용 방법은 3가지가 있다.

  • 컴파일 시점(AspectJ)
    • 컴파일러에 의해 자바 파일을 클래스 파일로 만들 때 바이트 코드를 조작하면서 AOP를 적용한다.
  • 로드 타임(AspectJ)
    • 각 클래스(Bean)들은 순수하게 컴파일이 되고, 만들어진 각 클래스 파일을 로딩하는 시점에 AOP를 적용한다.
    • 로드 타임 위빙이라고 칭한다 즉, 로드 타임 때 끼워넣는다는 의미이다.
  • 런타임 시점(현실적인 추천)
    • 스프링 AOP에서 스프링은 각 Bean(클래스)에 Aspect에 모듈화되어 있는 Advice를 사용해야한다는 것을 알고 있다.
    • 그래서 스프링은 각 Bean을 만들때, (스프링 애플리케이션에서 Bean을 만드는 과정을 런타임이다.) 각 Bean을 감싸는 proxy bean 을 만든다.
    • porxy bean이 실제 각 Bean(클래스)을 호출하기 전에 Advice를 끼워넣고 호출하게 되는 것이다.

 

AOP 구현체

  • AspectJ
    • 수많은 Join Point를 가지고 있다.
  • 스프링 AOP
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함