JDK 동적프록시

justindevcode·2024년 2월 29일
0

스프링 AOP

목록 보기
18/22
post-thumbnail
post-custom-banner

JDK동적 프록시

@Slf4j
public class TimeInvocationHandler implements InvocationHandler {
private final Object target;
public TimeInvocationHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws
Throwable {
log.info("TimeProxy 실행");
long startTime = System.currentTimeMillis();
Object result = method.invoke(target, args);
long endTime = System.currentTimeMillis();
long resultTime = endTime - startTime;
log.info("TimeProxy 종료 resultTime={}", resultTime);
return result;
}
}

리플렉션을 이용한 동적프록시 JDK버전이다.
지정된 인터페이스 만들어서 그것을 구현하며 동작가능한데 invoke에 대상 객체, 함수, 함수의 매개변수들등 이런거 정해진거 구현하며 함수사에이 실행할거 넣어주면 된다.
다만 JDK버전은 실재로직이 인터페이스로 구현되어있어야 가능하다는거같다.(이해 확실하지않음)
인터페이스를 생성해주면서 프록시를만들기때문에 그렇다.

profile
("Hello World!");
post-custom-banner

0개의 댓글