다이나믹 프록시에서 리플렉션이 어떻게 사용되는거죠?
468
投稿した質問数 15
ParentInterface parentInterface = (ParentInterface)Proxy.newProxyInstance(HelloApplication.class.getClassLoader(), new Class[]{ParentInterface.class}, (proxy, method, args) -> {
System.out.println("메소드 수행전에 할일");
Object methodResult = method.invoke(new ChildClass(), args);//child라는 class에 args를 모두 넘긴다
if(method.getName() == "sayHello"){//메서드 이름에 따라.. 처리를 분류할 수 있으니 다 정의하지 않아도됨 모든 메서드에 대해 기본적으로 정의되는거니까 중복도 피할 수 있음
System.out.println("sayHello!");
return methodResult;
}
System.out.println("sayOne!");
return methodResult;
});
parentInterface.sayHello();
//클라이언트는 인터페이스타입에 대해 그 메서드를 호출한다 이 인터페이스에 대한 메서드를 호출하면 위에서 정의한대로 프록스 객체를 런타임에 하나 만들어줘서
//위에서 정의한 대로의 로직을 타고 클라이언트에게 결과를 전송해준다
parentInterface.sayOne();
지금 인터페이스에 대한 .class정보를 넘겨주고 있어요
그리고 Proxy.newProxyInstance메서드로 들어가보면 넘겨준 class정보를 가지고 생성자를 만든다거나 하는것같거든요
그런거 자체가 리플렉션을 활용하는 행위인가요?
(class이름).class <- 이표현자체는 리플렉션을 활용하는 문장인가요?
cglib, 바이트 버디는 리플렉션을 사용하지 않나요?
回答 1
클래스 로더가 메소드 영역에 저장하는 것은 바이트코드인가요?
1
83
1
실제 개발 단계에서 이 같은 지식들을 적용할 기회가 있을까요?
0
102
1
코틀린 컴파일에 대해서
0
218
1
RuntimeException
0
340
1
Annotation processor에서 element type을 제한했는데도 다른 타입으로 컴파일이 됩니다...이상하게도..
0
399
1
gradle 사용하시는 분 도움
4
764
1
CGLib를 따라 해보면서 문제점이 있으며, 해결법입니다. JDK17입니다.
6
865
0
Spring Data JPA 동적 프록시를 사용 질문
0
419
1
어노테이션 프로세서 활용 예와 관련해 질문 있습니다.
0
503
1
"자바 언어가 플랫폼에 독립적이다" 라는 것에 대해 옳게 이해했는지 궁금합니다!
1
1133
1
'클래스 로더' 강의에서 클래스 로딩을 설명할 때 잘못된 것 같아 질문드립니다.
3
1258
2
metaspace 질문드립니다.
2
394
0
소스컴파일시점에 MagicMojaProcessor가 사용되면 안되는이유
0
424
0
다이나믹 프록시의 단점
0
350
0
new 와 constructor.newInstance();의 차이
0
663
0
두번 실행해야하는 이유
0
472
0
제가 설명한게 맞는지 봐주실 수 있나요?(jvm설명)
0
445
0
JIT 컴파일러와 인터프리터
1
1011
1
Method.invoke()
0
426
1
site 폴더내에 jacoco 폴더가 생기지 않습니다.
0
987
1
메모리 영역의 구조 질문
0
449
1
GC 설명부분 질문드립니다.
0
489
1
jit 와 인터프리터 질문
1
394
1
JVM 메모리 구조에 대해 공부하다가 질문 드립니다.
0
515
1

