오봉이와 함께하는 개발 블로그
스프링 핵심 원리 - 고급편 > 스프링이 제공하는 포인트컷 본문
728x90
스프링 핵심 원리 - 고급편 > 스프링이 제공하는 포인트컷
사실 스프링에서 우리가 필요한 포인트컷의 대부분을 이미 제공한다.
이번에는 스프링이 제공하는 NameMatchMethodPointcut
을 사용해서 구현해보자
@Test
void advisorTest3() {
ServiceImpl target = new ServiceImpl();
ProxyFactory proxyFactory = new ProxyFactory(target);
NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut();
pointcut.setMappedName("save");
DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor(pointcut, new TimeAdvice());
proxyFactory.addAdvisor(advisor);
ServiceInterface proxy = (ServiceInterface) proxyFactory.getProxy();
proxy.save();
proxy.find();
}
NameMatchMethodPointcut 사용 코드
NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut();
pointcut.setMappedName("save");
NameMatchMethodPointcut
을 생성하고 setMappedName()
을 통해 메서드 이름을 지정하면 포인트컷이 완성된다.
실행 결과
22:34:54.668 [main] INFO hello.proxy.common.advice.TimeAdvice - Time Proxy Execute
22:34:54.669 [main] INFO hello.proxy.common.service.ServiceImpl - call save
22:34:54.669 [main] INFO hello.proxy.common.advice.TimeAdvice - Time Proxy Shutdown resultTime = 0
22:34:54.669 [main] INFO hello.proxy.common.service.ServiceImpl - call find
실행 결과를 보면 save()
를 호출할 때는 어드바이스가 적용되지만, find()
를 호출할 때는 어드바이스가 적용되지 않는다.
스프링이 제공하는 포인트컷
스프링은 무수히 많은 포인트컷을 제공한다지만, 몇가지 예시만 보자
NameMatchMethodPointcut
: 메서드 이름을 기반으로 매칭한다. 내부에서는PatternMatchUtils
를 사용한다.- 예:
*xxx*
허용
- 예:
JdkRegexpMethodPointcut
: JDK 정규 표현식을 기반으로 포인트컷을 매칭한다.TruePointcut
: 항상 참을 반환한다.AnnotationMatchingPointcut
: 애노테이션으로 매칭한다.AspectJExpressionPointcut
: aspectJ 표현식으로 매칭한다.
가장 중요한 것은 aspectJ 표현식
여기에서 사실 다른 것은 중요하지 않다.
실무에서는 사용하기도 편리하고 기능도 가장 많은 aspectJ 표현식을 기반으 로 사용하는 AspectJExpressionPointcut
을 사용하게 된다. aspectJ 표현식과 사용방법은 중요해서 이후 AOP를 설명할 때 자세히 나온다.
지금은 Pointcut
의 동작 방식과 전체 구조에 집중하자.
출처: 김영한 지식공유자의 스프링 핵심 원리 고급편
728x90
'BE > Spring' 카테고리의 다른 글
스프링 핵심 원리 - 고급편 > 프록시 팩토리 적용 1, 2, 정리 (0) | 2024.10.03 |
---|---|
스프링 핵심 원리 - 고급편 > 여러 어드바이저 함께 적용 (0) | 2024.10.03 |
스프링 핵심 원리 - 고급편 > 직접 만든 포인트컷 (3) | 2024.10.01 |
스프링 핵심 원리 - 고급편 > 어드바이저 (0) | 2024.10.01 |
스프링 핵심 원리 - 고급편 > 포인트컷, 어드바이스, 어드바이저 소개 (0) | 2024.09.07 |
Comments