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
- kotlin
- QueryDSL
- SpringBoot
- spring
- JPQL
- springdatajpa
- 백준
- 인프런
- Proxy
- Exception
- 알고리즘
- transaction
- pointcut
- 스프링 핵심 기능
- java
- 스프링
- 자바
- Android
- http
- JDBC
- Servlet
- db
- 김영한
- Thymeleaf
- 스프링 핵심 원리
- Spring Boot
- Greedy
- AOP
- jpa
- 그리디
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