..


スポンサーリンク

AOP - プロキシ

あなたはそれらのアスペクトポイントカットアドバイスの作成 ​​方法を確認するために移動する前にそれはどのようにプロキシを理解することは非常に重要です
プロキシは、オブジェクトを含む、すべての公共medodiのオブジェクトを公開するラッパー(コンテナ)でしかありません。 あなたがプロキシ上のメソッドを呼び出すときにメソッドの実際の実装は、このようにユーザにプロキシの存在は完全に透過的に、オブジェクトのラップに委任されています。
単純なデリゲートメソッドは、さまざまな管理のアドバイスを扱うよりも、プロキシが実装するためにSpring AOPを使用しています。

プロキシ一つは非常に単純な実装ではありませんどのように我々は理解しています。 まず、単純なインターフェイスを作成します。






 {パブリックインターフェイスSimpleInterface



	

  



公共ボイドF1();



	

  



公共ボイドF2();







 }



我々は、単純な実装を作成します。





 SimplePojo {publicクラスがSimpleInterfaceを実装





  



 @オーバーライド



  



公共ボイドF1(){



    



 system.out.printlnを("F1");



    



 F2();



  



 }





  



 @オーバーライド



  



公共ボイドF2(){



    



 system.out.printlnを("F2");



  



 }







 }



我々は、メソッドのF1は、()F2()の呼び出しを行うことに注意してください。
今すでに我々はオブジェクトのコンテナを作成し、そのメソッドのすべてを公開する必要が言ったように、プロキシがインタフェースを実装し、すべてのメソッドは実際のオブジェクトへの呼び出しSimpleInterfaceを委任する、プロキシを作成してみましょう:






 SimpleProxy {publicクラスがSimpleInterfaceを実装





  



プライベートSimpleInterfaceは委任。





  



公共SimpleProxy(SimpleInterfaceデリゲート){



    



スーパー();



    



 this.delegate =委任;



  



 }





  



 @オーバーライド



  



公共ボイドF1(){



    



 system.out.printlnを("F1を委任()");



    



 delegate.f1();



  



 }





  



 @オーバーライド



  



公共ボイドF2(){



    



 system.out.printlnを("F2を委任()");



    



 delegate.f2();



  



 }







 }



私たちの単純な例では、プロキシがコールを委任されているというメッセージが印刷されていません。

我々は今どのように私たちのプロキシを参照する主なテストを作成します。






パブリッククラスメイン{





  



公共の静的な無効メイン(文字列[] args){



    



 / / Beanのインスタンスを作成します。

 

    



 SimpleInterface realBean SimplePojo =新しい();





    



 system.out.printlnを("#####豆#####");



    



 realBean.f1();



    



 System.out.println()を;



    



 realBean.f2();





    



 System.out.println()を;





    



 / /プロキシのインスタンスを作成します。



    



 SimpleInterface SimpleProxyプロキシ=新しい(新しいSimplePojo());





    



 system.out.printlnを("#####プロキシ#####");



    



 proxy.f1();



    



 System.out.println()を;



    



 proxy.f2();



  



 }







 }



コー​​ドの最初のブロックは、次の出力が生成されます。





 #####ビーン#####







 F1







 F2









 F2



今一番目のブロックの出力は次のようになっていること期待する。





 ##### #####プロキシ







委任F1()







 F1







委任F2()







 F2









委任F2()







 F2



ないInvce! 出力は次のようになります。





 ##### #####プロキシ







委任F1()







 F1







 F2









委任F2()







 F2



我々は法のF1は()であることをコールを見ることができるようにメソッドf2は、()は実際のオブジェクトにメソッドの実行を委任した後、すべての内部呼び出しを傍受されないため、プロキシを通過しないプロキシによる。
このような理由から、オブジェクトの他のメソッドから呼び出されるメソッドについてのアドバイスを作成することはできません、というかそうでなければアドバイスが実行されていないため、これらのメソッドは、外部のオブジェクトによって使用されている場合にのみ作成することができます。
Proxy

スプリングJavaのガイド
E -ラーニング
Linuxの(コース) Linuxの(コース)
オープンソースシステムへの完全なガイド。 49€から。
PHP(コース) PHP(コース)
動的なWebサイトを作成するためのフルコース。 49€から。
RubyとRuby on Rails(コース) RubyとRuby on Rails(コース)
RubyとRoRのと、ソフトウェアやWebアプリケーションを作成します。 39€から。
スポンサーリンク