Spring

[Spring] AOP 정리

Dong's Universe 2024. 4. 16. 17:57

AOP(Aspect Oriented Programming)

- 핵심 관심 사항(core concern)과 공통(부가) 관심 사항(cross-cutting concern)

AOP 예시

1. Target

- 핵심 기능을 담고 있는 모듈로 target은 부가기능을 부여할 대상이 됨

2. Advice

- 어느 시점에 어떤 공통 관심 기능을 적용할지 정의 한 것. 

Target에 제공할 부가기능을 담고 있는 모듈.

- 시점은 총 5개

3. JoinPoint

- Target가 Advice가 만나는 지점

- Aspect가 적용될 수 있는 지점(method, field)

- 즉 target 객체가 구현한 인터페이스의 모든 method는 JoinPoint가 됨

4. Pointcut

- 공통 관심 사항이 적용될 JoinPoint.

- Advice를 적용할 target의 method를 선별하는 정규 표현식

5. Aspect

- 여러 객체에서 공통으로 적용되는 공통 관심 사항

Aspect = Advice + JoinPoint

6. Advisor

7. Weaving

어떤 Advice를 어떤 Pointcut(핵심사항)에 적용시킬 것인지에 대한 설정(Advisor)

 

생성자 injection을 사용하는 이유

1. final을 사용할 수 있음

2. 순환 참조를 막을 수 있다.

 

constructor-arg의 순서는 상관 있다.

 

Advice 목록

메소드의 주기와 연관됨

Before Advice

대상 객체의 메소드가 실행되기 전에 실행됨

 

After Returning Advice

대상 객체의 method 실행이 정상적으로 끝난 뒤 실행됨

 

After Throwing Advice

대상 객체의 method 실행 중 exception이 발생했을 때 실행됨

 

After Advice

대상 객체의 method 실행이 끝나면 실행됨(finally와 역할이 같음)

 

Around Advice

위의 네가지 Advice를 다 구현할 수 있는 Advice

 

exception은 축소만 가능하다.

접근제한자는 확대만 가능하다.