Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Exception
- 그리디
- SpringBoot
- 김영한
- Proxy
- 알고리즘
- 자바
- http
- 인프런
- Greedy
- AOP
- Android
- 스프링 핵심 원리
- Spring Boot
- 백준
- 스프링 핵심 기능
- springdatajpa
- transaction
- pointcut
- JDBC
- java
- kotlin
- jpa
- spring
- QueryDSL
- Thymeleaf
- 스프링
- db
- Servlet
- JPQL
Archives
- Today
- Total
개발자되기 프로젝트
[스프링AOP] 스프링AOP 구현 - pointcut 분리 본문
- @Around 에 포인트컷 표현식을 직접 넣을 수 도 있지만,
- @Pointcut 애노테이션을 사용해서 별도로 분리할 수 도 있다.
1. AspectV2
@Slf4j
@Aspect
public class AspectV2 {
//hello.aop.order 패키지와 하위 패키지
@Pointcut("execution(* hello.aop.order..*(..))")
private void allOrder(){ } // pointcut signature
@Around("allOrder()")
public Object doLog(ProceedingJoinPoint joinPoint) throws Throwable{
log.info("[[log] {}", joinPoint.getSignature());
return joinPoint.proceed(); //target호출
}
}
2. @Pointcut
- @Pointcut 에 포인트컷 표현식을 사용한다.
- 메서드 이름과 파라미터를 합쳐서 포인트컷 시그니처(signature)라 한다.
- 메서드의 반환 타입은 void 여야 한다.
- 코드 내용은 비워둔다.
- 포인트컷 시그니처는 allOrder() 이다.
- 이름 그대로 주문과 관련된 모든 기능을 대상으로 하는 포인트컷이다.
- @Around 어드바이스에서는 포인트컷을 직접 지정해도 되지만, 포인트컷 시그니처를 사용해도 된다.
여기서는 @Around("allOrder()") 를 사용한다. - private , public 같은 접근 제어자는 내부에서만 사용하면 private 을 사용해도 되지만,
다른 애스팩트에서 참고하려면 public 을 사용해야 한다.
- 결과적으로 AspectV1 과 같은 기능을 수행한다. 이렇게 분리하면 하나의 포인트컷 표현식을 여러
어드바이스에서 함께 사용할 수 있다. - 그리고 뒤에 설명하겠지만 다른 클래스에 있는 외부 어드바이스에서도 포인트컷을 함께 사용할 수 있다.
3. GitHub: 220105 @Pointcut
GitHub - bsh6463/SpringAOP
Contribute to bsh6463/SpringAOP development by creating an account on GitHub.
github.com
'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글
[스프링AOP] 스프링AOP 구현 - Pointcut 참조 (0) | 2022.01.05 |
---|---|
[스프링AOP] 스프링AOP 구현 - 여러 Advice (0) | 2022.01.05 |
[스프링AOP] 스프링AOP 구현 (0) | 2022.01.05 |
[스프링AOP] 예제 프로젝트 (0) | 2022.01.05 |
[스프링AOP] 프로젝트 생성 (0) | 2022.01.05 |
Comments