빠에야는 개발중

스프링 퀵 스타트 : chap 2-1 본문

공부/스프링

스프링 퀵 스타트 : chap 2-1

빠에야좋아 2018. 1. 26. 02:43

스프링 AOP

이번에는 AOP를 적용하여 관심사를 분리해보고자 한다. 이전에 한번 써볼 기회가 있었는데 컨벤션 문제로 롤백 되었던 기억이 있다. 그래서 정확한 사용법을 모르기 때문에 차근차근 짚어보았다.

AOP 이해하기

관점 지향 프로그래밍(Aspect Oriented Programming)은 객체 지향 프로그래밍과는 조금 다른 방식의 패러다임이다. 기존의 OOP에서는 공통 코드를 독립된 모듈로 분리해내기가 어려웠는데, AOP를 사용하면 쉽게 해결할 수 있다.


우선 용어를 알아보자.


핵심 관심
주요한 비즈니스 로직을 의미한다.


횡단 관심
로깅, 트랜잭션 처리, 예외 처리 등의 다수의 핵심 관심에 걸친 공통 관심을 의미한다.


조인포인트(Joinoint)
조인포인트는 호출되는 모든 비즈니스 메소드를 의미한다. “포인트컷 후보”라고도 한다.


포인트컷(Pointcut)
포인트컷은 조인포인트들 중 횡단 관심이 삽입되기 위한 기준점으로서 필터링 된 메소드를 의미한다. 클래스, 패키지, 시그니처를 지정할 수 있다.


어드바이스(Advice)
어드바이스는 횡단 관심에 해당하는 코드를 의미한다. 메소드로써 작성된다.


위빙(Weaving)
위빙은 포인트컷에 어드바이스가 삽입되는 과정을 의미한다.



AOP란 “핵심 관심들에서 횡단 관심(어드바이스)을 뽑아내어 적절한 위치(포인트컷)에 놓는(위빙) 방법”이라고 할 수 있다.


다섯가지 동작 시점

어드바이스의 동작 시점은 포인트컷의 메소드를 기준으로 다섯가지가 있다.

  1. before
    메소드가 실행되기 전에 동작한다.


  2. after-returning
    메소드가 리턴을 한 후에 동작한다.


  3. after-throwing
    메소드가 예외처리를 한 후에 동작한다.


  4. after
    메소드가 실행된 후에 동작한다. (try - catch - finally의 finally 구문처럼)


  5. around
    메소드의 전과 후에 모두 동작한다.

AOP 실습

간단하게 AOP를 체험해보자.


어드바이스 메소드를 하나 작성한다. 간단한 로깅을 수행한다.




applicationContext.xml 파일에 설정을 추가한다. 이 때 어드바이스는 빈으로 관리해야한다.




표현식을 변경하여 포인트컷의 정보를 변경할 수 있다. 

위에서는 get으로 시작하는 메소드에만 위빙되도록 했다.




결과적으로 다음과 같이 getBoardList() 메소드가 실행되기 전에 로깅이 되는 모습을 볼 수 있다.




IoC와 마찬가지로 어노테이션을 사용할 수도 있다.




공통된 관심사를 분리하는 것은 매우 우아한 기술이기에 어렵다고 생각했는데 툴이 굉장히 편하게 제공된다. 스프링은 역시 좋은 프레임워크다.


'공부 > 스프링' 카테고리의 다른 글

스프링 퀵 스타트 : chap 3-1  (379) 2018.01.29
스프링 퀵 스타트 : chap 2-2  (406) 2018.01.27
스프링 퀵 스타트 : chap 1-2  (392) 2018.01.23
스프링 퀵 스타트 : chap 1-1  (0) 2018.01.21
잊고 있던 스프링 기억해내기  (402) 2018.01.20
Comments