ホームページ  >  記事  >  Java  >  Javaにおける動的プロキシ原理の解析

Javaにおける動的プロキシ原理の解析

黄舟
黄舟オリジナル
2017-10-16 10:17:491843ブラウズ

この記事では、主に Java 動的プロキシの原則の分析に関する関連情報を紹介します。この記事が、必要な友人が動的プロキシの原則を習得するのに役立つことを願っています

Java 動的プロキシの原則分析

。概要

AOPのインターセプト機能はJavaのダイナミックプロキシによって実装されています。端的に言えば、ターゲット クラスをベースにアスペクト ロジックを追加して拡張ターゲット クラスを生成することです (アスペクト ロジックは、ターゲット クラスの関数が実行される前、ターゲット クラスの関数が実行された後、または実行されたときに実行されます)。 Spring の動的プロキシは、Cglib を使用して実装されています。ここで分析するのは、JDK での動的プロキシの実装メカニズムです。

例を通して、JDK での動的プロキシの実装を簡単に理解しましょう。インターフェイス

public interface IHello { 
public void sayHello(); 
}
プロキシが必要なクラス

public class HelloImpl implements IHello { 
public void sayHello() { 
System.out.println(“Hello World…”); 
} 
}

コールプロセッサ実装クラス

public class ProxyHandler implements InvocationHandler { 
private Object target; 
public ProxyHandler(Object target) { 
this.target = target; 
} 
public Object proxyInstance() { 
return Proxy.newProxyInstance(target.getClass().getClassLoader(), 
target.getClass().getInterfaces(), this); 
} 
public Object invoke(Object proxy, Method method, Object[] args) 
throws Throwable { 
System.out.println(“aspect before … “); 
Object result = method.invoke(this.target, args); 
System.out.println(“aspect after … “); 
return result; 
} 
}

テストクラスエントリ

public class Main { 
public static void main(String[] args) { 
ProxyHandler proxy = new ProxyHandler(new HelloImpl()); 
IHello hello = (IHello) proxy.proxyInstance(); 
hello.sayHello(); 
} 
}

プロキシソースコード解析

rreee
省略ドン気にしない コード

newProxyInstance() 方法

以上がJavaにおける動的プロキシ原理の解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。