독서/스프링 입문을 위한 자바 객체지향의 원리와 이해

스프링 삼각형과 설정 정보-2

더덕2 2023. 5. 23. 17:30

AOP - Aspect? 관점? 핵심 관심사? 횡단 관심사?

AOP(Aspect-Oriented Programming) 관점 지향 프로그래밍

 

AOP는 로직(code) 주입이라고 할 수 있다.

 

횡단관심사 : 로깅, 보안, 트랜잭션 기능 처럼 다수의 모듈에 공통적으로 나타나는 부분을 뜻한다.

핵심관심사 : 주요 프로그램의 로직을 얘기한다. 

 

코드 = 핵심 관심사 + 횡단 관심사

 

@Before : 실행 전 시작되는 애너테이션

@After : 실행 후 시작되는 애너테이션

 

스프링 AOP의 핵심 3가지

- 스프링 AOP는 인터페이스 기반이다.

- 스프링 AOP는 프록시 기반이다.

- 스프링 AOP는 런타임 기반이다.

 

 

JoinPoint 파라미터를 이용하면

실행 시점에 실제 호출된 메서드가 무엇인지, 실제 호출된 메서드를 소유한 객체가 무엇인지

또 호출된 메서드의 파라미터는 무엇인지 등의 정보를 확인할 수 있다. 

 

광의의 JoinPoint는 Aspect 적용이 가능한 모든 지점을 말하고

협의의 JoinPoint란 호출된 객체의 메서드다.

 

 

Aspect = Advice들 + Pointcut들

Advice = Pointcut에 적용할 로직, 즉 메서드를 의미 언제, 무엇을 적용할지 정의한 메서드

 

 

Advisor = 한 개의 Advice + 한 개의 Pointcut

Aspect와 Advisor의 차이점은 Advisor는 스프링 AOP에서만 사용하는 용어이며 스프링이 발전해 오면서 

다수의 Advice와 다수의 Pointcut을 다양하게 조합해서 사용할 수 있는 방법 즉 Aspect가 나왔기 때문에 

하나만 사용하면 Advisor를 사용할 필요가 없어졌다.