ch3-18 - AOP의 개념과 용어
- AOP 개념 - 부가기능을 동적으로 추가해주는 기술
- AOP 용어 - target, advice, proxy, weaving, join point, pointcut
- Advice 애너테이션의 종류 - @Around, @Before, @After, @AfterReturning, @AfterThrowing
- pointcut에 대해 - advice(부가기능)가 추가될 메서드를 지정하기 위한 패턴
- AOP 사용을 위한 Maven dependency - aspectjrt, spring-aop, aspectjweaver
공통 코드의 분리
- 핵심기능과 부가기능을 분리 후 호출.
- 특정 패턴이나, 애너테이션이 붙었을 때 AOP작업을 하도록 할 수 있다.
코드를 자동으로 추가한다면, 어디에?
BeforeAdvice - 맨앞, AfterAdvice - 맨뒤, AroundAdvice - 양쪽에 추가
AOP(Aspect Oriented Programming)란?
- 관점 지향 프로그래밍.
- 부가 기능(advice)을 동적(실행 중에)으로 추가해주는 기술.
- 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가.
- OOP, AOP 둘 다 변경에 유리한 코드를 만들기 위해 분리하는 것.
AOP관련 용어
- target - advice가 추가될 객체. 핵심 기능.
- advice - target에 동적으로 추가될 부가 기능(코드).
- proxy - target에 advice가 동적으로 추가되어 생성된 객체.
- weaving - target에 advice를 꿰매서 proxy를 만드는 것.
- join point - advice가 추가(join)될 대상(메서드).
- pointcut - join point들을 정의한 패턴.
Advice의 종류
- Advice의 설정은 XML과 애너테이션, 두 가지 방법으로 가능.
@Around - 메서드의 시작과 끝에 추가되는 부가 기능
@Before
@After
@AfterReturning - 예외가 발생하지 않았을 때, 실행되는 부가 기능.
@AfterThrowing - 예외가 발생했을 때, 실행되는 부가 기능.
pointcut
- advice가 추가될 메서드를 지정하기 위한 패턴.
- execution(반환타입 패키지명.클래스명.메서드명(매개변수 목록))
@Around("execution(* com.fastcamput.ch3.aop.*.*(..))")
pom.xml
- aspectjrt, spring-aop, aspectjweaver 추가