본문 바로가기
빅데이터 부트캠프/Spring Framework

빅데이터 부트캠프 92일차

by Mecodata 2022. 11. 16.

AOP(Aspect Oriented Programming)

- 관점 지향 프로그래밍
- 공통 기능을 분리하여 모듈화하여 지정 시점에 해당 로직이 실행하게 함

- 부가기능을 Aspect로 정의하여 핵심기능에서 부가기능을 분리함으로써 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬수 있도록 도와주는 개념

- Aspect = AOP의 기본 모듈 (Advice + Pointcut)

- Aspect는 싱글톤 형태의 객체로 존재

- Advice = 부가기능 설정
- Pointcut = Advice를 어디에 적용할지 설정

 

어노테이션

- @Aspect = AOP로 정의하는 클래스 지정
- @Pointcut = 메소드, Annotation 등 적용 지점 설정


- @Before(pointcut 표현식) = 메소드 실행 전 advice 실행
- @After(pointcut 표현식) = 메서드 실행중 exception이 발생하여도 무조건 advice실행

@Around(pointcut 표현식) = 메서드 실행 전/후 밑 exception 발생시 advice 실행


- @AfterReturning(pointcut, returning) =  정상적으로 메서드 실행 후에 advice실행
- @AfterThrowing(pointcut, throwing) = 메서드 실행중 exception 발생 시 advice실행

 

aop.xml 태그

- <aop:before> : 메서드 실행 전에 advice실행

- <aop:after> : 메서드 실행중 exception이 발생하여도 무조건 advice실행
- <aop:around> : 메서드 실행 전/후 밑 exception 발생시 advice 실행
- <aop:after-returning> : 정상적으로 메서드 실행 후에 advice실행

- <aop:after-throwing> : 메서드 실행중 exception 발생 시 advice실행

 

pointcut 표현식

- 형식 => execution([수식어] 리턴타입 [클래스이름].이름(파라미터))

- * = 모든 값, .. = 0개 이상

ex) execution(* biz.Car.buy*(..)) = 모든 데이터 타입 리턴 가능 + biz.Car 클래스에서 이름이 buy로 시작하는 파라미터가 0개 이상인 모든 메서드를 지목  

 

댓글