강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

진우님의 프로필 이미지
진우

작성한 질문수

스프링 핵심 원리 - 고급편

JDK 동적 프록시 - 적용1

Proxy.newProxyInstance 의 두번째 인자가 배열인 이유를 이해하지 못하겠습니다.

작성

·

473

0

예를들어

interface TestInterfaceA {

    void testA();

}

interface TestInterfaceB {

    void testB();

}

두개가 있다고 가정했을때

publiic TestImpl implements TestInterfaceA, TestInterfaceB {

        void testA(){

        }

        void testB(){

        }

}

이렇게 인터페이스를 한개이상 구현할수 있어서

배열로 들어가야 되는건가요??

퀴즈

수동 프록시 방식의 주된 문제점은 무엇일까요?

컴파일 시점 오류 발생

요청 처리 성능 저하

대상 클래스 수만큼 유사한 프록시 클래스 생성

런타임 시 프록시 적용 불가

답변 1

2

안녕하세요. 진우님, 공식 서포터즈 OMG입니다.

코드 레벨에서 보니 왜 배열처리인지 확인할 수 있었습니다.

Proxy클래스에서 newProxyInstance 구현 내용을 보니 getProxyConstructor에 인자로 배열을 넘기더라구요,

getProxyConstructor()에서는 배열의 길이가 1인지 아닌지에 따라 1인경우는 배열의 0번째 인자를 가지고 로직이 흘러가더라구요.

주석 내용을 보니 인터페이스가 하나 일 경우 최적화 로직을 돌리네요 .

 

 

 

감사합니다.

진우님의 프로필 이미지
진우

작성한 질문수

질문하기