Java 학습의 동적 프록시 편

2939 단어

Java 학습의 동적 프록시 편


0x00 선언


뒤의 빈틈 연구 학습에서 반드시 알아야 할 몇 가지 지식점.반사 메커니즘과 동적 에이전트 메커니즘.반사에 관해서는 앞에서 이미 말했으니, 여기서는 더 이상 군말을 하지 않겠다.

0x01 동적 에이전트


여기서 먼저 동적 에이전트의 정의를 말해 봅시다.
동적 에이전트는 대상 대상에게 에이전트 대상을 제공하고 에이전트 대상이 대상 대상에 대한 인용을 제어합니다.
([수동 익살] 사실 동적 대리인은 중개상이다. 간접적으로 물건을 고객에게 보내지만 그 전에 반드시 차액을 벌어야 한다)
우리 에서 동적 에이전트를 사용하는 주요 목적은 이다.
여기에 몇 가지 개념을 보급한다.
1.  : 

2.  :

3.  : , 


우리는 정상적인 상황에서 실제 대상 호출 방법을 사용하는 코드를 쓸 것이다.
컴퓨터 인터페이스 코드:
package com.test.web.proxy;

public interface computer {
    public String method(double money);
    String show();
}



lenveo 클래스 코드:
package com.test.web.proxy;

public class lenveo implements computer{
    @Override
    public String method(double money) {
        System.out.println(" +"+money+" ");
        return " ";

    }

    @Override
    public String show() {
        System.out.println(" ");

        return " ";
    }
}

테스트 클래스 코드:
package com.test.web.proxy;

public class test1 {
    public static void main(String[] args) {
        lenveo lenveo = new lenveo();
        String method = lenveo.method(8000);
        String show = lenveo.show();
        System.out.println(show);
        System.out.println(method);




    }
}

이것은 정상적인 코드입니다. 만약 우리가 다른 종류의 코드를 바꾸지 않은 상황에서 그를 강화해야 한다면 동적 에이전트를 사용할 수 있습니다.
다음은 동적 에이전트의 실현 절차를 살펴보고 절차에 따라 동적 에이전트를 실현한다.
package com.test.web.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class test {
    public static void main(String[] args) {
        lenveo lenveo = new lenveo();


                                            //                     // 
        computer proxy = (computer) Proxy.newProxyInstance(lenveo.getClass().getClassLoader(), lenveo.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                System.out.println("invoke ");
                Object obj = method.invoke(lenveo, args);

                return obj;
            }
        });
        String method = proxy.method(3000);
        System.out.println(method);

    }
}


여기 프록시.newProxyInstance 메서드는 다음과 같은 세 가지 매개변수를 전달합니다.
1. :new .getClass().getClassLoader()

2. :new .getClass().getInterfaces()

3. :new InvocationHandler() 

동적 에이전트를 사용하면 에이전트 대상이 임의의 방법을 호출하고 에이전트의 invoke 방법이 실행됩니다.
invoke 매개 변수:
1.proxy: 

2.method: , 

3.args: 


0x02 끝


자, 또 한 편의 문장이 완성되었으니 동적 대리 메커니즘이 비교적 중요하다.여기도 간단한 동적 에이전트 내용일 뿐입니다. 시간이 나면 동적 에이전트를 업데이트하겠습니다.

좋은 웹페이지 즐겨찾기