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개 이상인 모든 메서드를 지목
'빅데이터 부트캠프 > Spring Framework' 카테고리의 다른 글
| 빅데이터 부트캠프 93일차 (0) | 2022.11.17 |
|---|---|
| 빅데이터 부트캠프 91일차 (1) | 2022.11.15 |
| 빅데이터 부트캠프 90일차 (0) | 2022.11.14 |
댓글