336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Spring ProceedingJoinPoint의 메서드
//Aspect 역할을 할 클래스를 선언하기 위해 어노테이션 선언 @Aspect public class ExeTimeAspect { //PointCut의 속성에 핵심코드의 어느 부분까지 공통 기능을 사용하겟다고 명시 @Pointcut("expression=within(com.ktko.test.*)") private void publicTarget() { } //around가 적용될 포인트 컷을 명시 : publicTarget() @Around("publicTarget()") public Object measure(ProceedingJoinPoint joinPoint) throws Throwable { long start = System.nanoTime(); try { Object result = joinPoint.proceed(); return result; } finally { long finish = System.nanoTime(); Signature sig = joinPoint.getSignature(); System.out.printf("%s.%s(%s) 실행 시간 : %d ns\n", joinPoint.getTarget().getClass().
getSimpleName(), sig.getName(), Arrays.toString(joinPoint.getArgs()), (finish - start)); System.out.println(joinPoint.getTarget().getClass().getSimpleName()); System.out.println(sig.getName()); System.out.println(Arrays.toString(joinPoint.getArgs())); } } }
Around Advice에서 사용할 공통 기능 메서드는 대부분 파라미터로 전달 받은 ProceedingJoinPoint의 proceed() 메서드만 호출하면 된다.
개발도중 호출되는 대상 객체에 대한 정보, 실행되는 메서드에 대한 정보, 메서드를 호출할 때 전달된 인자에 대한 정보가필요할 때가 다. 이들 정보에 접근할 수 있도록 ProceedingJoinPoint 인터페이스는 다음의 메서드를 제공하고 있다.
ProceedingJoinPoint 인터페이스의 제공 메서드
메서드 |
설명 |
Signature getSignature() |
호출되는 메서드에 대한 정보를 구한다. |
Object getTarget() |
대상 객체를 구한다. |
Object[] getArgs() |
파라미터의 목록을 구한다. |
org.aspectj.lang.Signature 인터페이스는 호출되는 메서드와 관련된 정보를 제공하며 다음과 같은 메서드를 정의하고 잇다.
메서드 |
설명 |
String getName |
메서드의 이름을 구한다. |
String toLongString() |
메서드를 완전하게 표현한 문장을 구한다. (메서드의 리턴 타입, 파라미터 타입이 모두 표시된다.) |
String toShortString() |
메서드를 축약해서 표현한 문장을 구한다. (기본 구현은 메서드의 이름만을 구한다. |
'Spring 스프링 ' 카테고리의 다른 글
[스프링/Spring] DI를 알기 전에 GenericXmlApplicationContext 대해서 (1) | 2018.10.16 |
---|---|
[스프링/Spring] DI를 왜 사용해야 할까 ? (1) | 2018.10.15 |
[스프링/Spring] AOP구현(@Aspect 어노테이션 사용) (0) | 2018.04.16 |
[스프링/Spring] AOP구현(XML 스키마 기반) (0) | 2018.04.16 |
[스프링/Spring] AOP 개념 설명 (0) | 2018.04.16 |