Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[스프링AOP 포인트컷] @annotation, @args 본문

인프런/[인프런] 스프링 핵심 원리 - 고급

[스프링AOP 포인트컷] @annotation, @args

Seung__ 2022. 1. 7. 22:16

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


 

GitHub - bsh6463/SpringAOP

Contribute to bsh6463/SpringAOP development by creating an account on GitHub.

github.com

 

Comments