inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Thêm Java, nhiều cách thao tác mã khác nhau

Dọn dẹp proxy động

다이나믹 프록시에서 리플렉션이 어떻게 사용되는거죠?

468

jjc5524

15 câu hỏi đã được viết

0

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();

 

 


  1. 지금 인터페이스에 대한 .class정보를 넘겨주고 있어요

그리고 Proxy.newProxyInstance메서드로 들어가보면 넘겨준 class정보를 가지고 생성자를 만든다거나 하는것같거든요

그런거 자체가 리플렉션을 활용하는 행위인가요?

  1. (class이름).class <- 이표현자체는 리플렉션을 활용하는 문장인가요?

  2. cglib, 바이트 버디는 리플렉션을 사용하지 않나요?

java JPA spring

Câu trả lời 1

0

corvo789

  1. 그렇다 생각합니다.

  2. 힙에 있는 클래스 인스턴스의 참조값입니다.

  3. 서브클래스를 동적으로 만드니 리플렉션을 사용한다 생각합니다.

클래스 로더가 메소드 영역에 저장하는 것은 바이트코드인가요?

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

490

1

jit 와 인터프리터 질문

1

394

1

JVM 메모리 구조에 대해 공부하다가 질문 드립니다.

0

515

1