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 | 29 | 30 | 31 |
Tags
- 스프링
- Android
- JPQL
- 스프링 핵심 기능
- Greedy
- Proxy
- 알고리즘
- kotlin
- jpa
- java
- Exception
- AOP
- springdatajpa
- QueryDSL
- Spring Boot
- pointcut
- Servlet
- spring
- http
- 김영한
- 스프링 핵심 원리
- 그리디
- 인프런
- 백준
- 자바
- SpringBoot
- db
- JDBC
- transaction
- Thymeleaf
Archives
- Today
- Total
개발자되기 프로젝트
[스프링AOP 포인트컷] @annotation, @args 본문
1. @annotation
- 메서드가, 주어진 애노테이션을 가지고 있는 조인 포인트를 매칭
- @annotation(hello.aop.member.annotation.MethodAop) -->@MethodAop를 가지고 있는 메서드에 적용
- 다음과 같이 메서드(조인 포인트)에 애노테이션이 있으면 매칭한다.
public class MemberServiceImpl {
@MethodAop("test value")
public String hello(String param) {
return "ok";
}
}
2. Test
@ClassAop
@Component
public class MemberServiceImpl implements MemberService{
@Override
@MethodAop("test value")
public String hello(String param) {
return "ok";
}
public String internal(String param){
return "ok";
}
}
@Slf4j
@Import(AtAnnotationTest.AtAnnotationAspect.class)
@SpringBootTest
public class AtAnnotationTest {
@Autowired
MemberService memberService;
@Test
void success(){
log.info("memberService Proxy={}", memberService.getClass());
memberService.hello("helloA");
}
@Slf4j
@Aspect
static class AtAnnotationAspect{
@Around("@annotation(hello.aop.member.annotation.MethodAop)")
public Object doAtAnnotation(ProceedingJoinPoint joinPoint) throws Throwable {
log.info("[@annotation] {}", joinPoint.getSignature());
return joinPoint.proceed();
}
}
}
3. @args
- 전달된 실제 인수의 런타임 타입이, 특정 타입의 애노테이션을 갖는 조인 포인트
- 전달된 인수의 런타임 타입에 @Check 애노테이션이 있는 경우에 매칭한다.
@args(test.Check)
4. GitHub: 220107 @annotation, @args
'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글
[스프링AOP 포인트컷] 매개변수 전달 (0) | 2022.01.07 |
---|---|
[스프링AOP 포인트컷] bean (0) | 2022.01.07 |
[스프링AOP 포인트컷] @target, @within (0) | 2022.01.07 |
[스프링AOP 포인트컷] args (0) | 2022.01.07 |
[스프링AOP 포인트컷] within (0) | 2022.01.06 |
Comments