Spring

스프링AOP

정숙씨의 쏠쏠한 코딩 2021. 11. 14. 19:20

- 스프링 AOP 관련 용어 - 

용어 설명
aspect 구현 하고자 하는 보조 기능을 의미
advice aspect의 실제 구현체(클래스)를 의미한다. 메서드 호출을 기준으로 여러 지점에서 실행된다.
joinpoint advice를 적용 하는 지점을 의미한다, 스프링은 method 결합점만 제공 한다.
pointcut advice가 적용되는 대상을 지정한다, 패키지이름/클래스이름/메서드이름을 정규식으로 지정하여 사용한다.
target advice가 적용되는 클래스를 의미한다.
weaving advice를 주기능에 적용 하는 것을 의미한다.

- 스프링 프레임워크에서 AOP 기능을 구현 하는 방법 - 

  • 스프링 프레임워크에서 제공하는 AOP 관련 API를 이용 하는 방법
  • 어노테이션 이용 방법
    • @Aspect 어노테이션 이용

- 스프링 API를 이용한 AOP 기능 구현 과정 -

  1. 타깃(Target) 클래스 지정
  2. 어드바이스(Advice) 클래스 지정
  3. 설정 파일에서 포인트컷(PointCut)을 설정
  4. 설정 파일에서 어드바이스와 포인트컷을 결합하는 어드바이저를 설정
  5. 설정 파일에서 스프링의 ProxyFactoryBean 클래스를 이용해 타깃에 어드바이스 설정
  6. getBean() 메서드로 빈 객체에 접근해 사용

- 스프링 API 에서 제공하는 Advice 인터페이스 -

인터페이스 추상 메서드 설명
MethodBeforeAdvice void before(Method mehod, Object[] args, Object target) throws Throwable

해당 메서드가 실행 되기 전 실행
- Method method : 대상 객체에서 실행된 메서드를 나타내는 메서드 객체
- Object[] args : 메서드 인자 목록
- Object target : 대상 객체
인터페이스 추상 메서드 설명
AfterReturningAdvice void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable 해당 메서드가 실행 된 후 실행
- Object returnValue : 대상 객체의 메서드가 반환 하는 값
- Method method : 대상 객체에서 실행된 메서드를 나타내는 메서드 객체
- Object[] args : 메서드 인자 목록
- Object target : 대상 객체
인터페이스 추상 메서드 설명
ThrowAdvice void afterThrowing(Method method, Object[] args, Object target, Exception ex) throws Throwable 해당 메서드에서 예외 발생 시 실행
- Method method : 대상 객체에서 메서드를 나타내는 메서드 객체
- Object[] args : 메서드 인자 목록
- Object target : 대상 객체
- Exception ex : 발생한 예외 타입
인터페이스 추상 메서드 설명
MethodInterceptor Object invoke(MethodInvocation invocation) 해당 메서드의 실행 전/후와 예외 발생 시 실행
- MethodInvocation invocation : 대상 객체의 모든 정보를 담고 있는 객체(호출된 메서드, 인자 등)
- MethodInvocation 에서 invoke() 메서드를 통해 다른 세가지 인터페이스들의 기능을 동시에 수행 할 수 있다.

- xml 스키마 방식 - 

- 공통 부분 Main.class -

-> 메서드 호출시 이해한게 맞다면 joinpoint 부분

- loggingAdvice.class-

AOP 구현간 메서드 전/후 처리에 대한 advice 부분

-Calculator.class-

-> 스프링 AOP간 핵심 기능 제공을 하는 클래스, 이해한게 맞다면 Weaving 부분으로 확인됨

프록시 패턴에 대해서 공부 해보는것도 나쁘지 않아보임.