You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
섹션9. @aspect AOP
1️⃣ Aspect 프록시 - 적용
스프링 애플리케이션에 프록시를 적용하려면 포인트컷과 어드바이스로 구성되어 있는 어드바이저(Advisor)를 만들어서 스프링 빈으로 등록하면 된다.
그러면 나머지는 앞서 배운 자동 프록시 생성기가 모두 자동으로 처리해준다.
자동프록시 생성기는 스프링 빈으로 등록된 어드바이저들을 찾고, 스프링 빈들에 자동으로 프록시를 적용해준다. (물론 포인트컷이 매칭되는 경우에 프록시를 생성한다.)
스프링은
@Aspect애노테이션으로 매우 편리하게 포인트컷과 어드바이스로 구성되어 있는 어드바이저 생성 기능을 지원한다.지금까지 어드바이저를 직접 만들었던 부분을
@Aspect애노테이션을 사용해서 만들어보자.@Aspect: 애노테이션 기반 프록시를 적용할 때 필요하다.@Around("execution(* hello.proxy.app..*(..))")@Around의 값에 포인트컷 표현식을 넣는다. 표현식은 AspectJ 표현식을 사용한다.@Around의 메서드는 어드바이스(Advice)가 된다.ProceedingJoinPoint joinPoint: 어드바이스에서 살펴본MethodInvocation invocation과 유사한 기능이다. 내부에 실제 호출 대상, 전달 인자, 그리고 어떤 객체와 어떤 메서드가 호출되었는지 정보가 포함되어 있다.
joinPoint.proceed(): 실제 호출 대상(target)을 호출한다.AopConfig
AopConfig.class를 등록하자.
실행
2️⃣ Aspect 프록시 - 설명
✅ @aspect 어드바이저 빌더
자동 프록시 생성기의 작동 과정을 알아보자
3-1. Advisor 빈 조회: 스프링 컨테이너에서 Advisor 빈을 모두 조회한다.
3-2. @aspect Advisor 조회: @aspect 어드바이저 빌더 내부에 저장된 Advisor 를 모두 조회한다.
체가 프록시를 적용할 대상인지 아닌지 판단한다. 이때 객체의 클래스 정보는 물론이고, 해당 객체의 모든 메서드
를 포인트컷에 하나하나 모두 매칭해본다. 그래서 조건이 하나라도 만족하면 프록시 적용 대상이 된다. 예를 들어
서 메서드 하나만 포인트컷 조건에 만족해도 프록시 적용 대상이 된다.
록한다. 만약 프록시 적용 대상이 아니라면 원본 객체를 반환해서 원본 객체를 스프링 빈으로 등록한다.
3️⃣ 정리
Beta Was this translation helpful? Give feedback.
All reactions