[轉]JAVA動態代理的使用

轉自:http://www.cnblogs.com/kongxx/archive/2005/08/08/209749.html

 

 

Java動態代理實現


Kongxx

 

在目前的Java開發包中包含了對動態代理的支持,但是其實現只支持對接口的的實現。

其實現主要通過是java.lang.reflect.Proxy類和java.lang.reflect.InvocationHandler接口。

Proxy類主要用來獲取動態代理對象,InvocationHandler接口用來約束調用者實現,如下,HelloWorld接口定義的業務方法,HelloWorldImplHelloWorld接口的實現,HelloWorldHandlerInvocationHandler接口實現。代碼如下:

業務接口:

 

業務接口實現:

 

 

InvocationHandler實現,需要在接口方法調用前後加入一部份處理工作,這裏僅僅在方法調用前後向後臺輸出兩句字符串,其代碼如下:

 

首先獲取一個業務接口的實現對象;

         獲取一個InvocationHandler實現,此處是HelloWorldHandler對象;

         創建動態代理對象;

         通過動態代理對象調用sayHelloWorld()方法,此時會在原始對象HelloWorldImpl. sayHelloWorld()方法前後輸出兩句字符串。

運行測試類輸出如下:

-------------------------------

 

before method invoke!

Hello World!

after method invoke!

 

-------------------------------

此處Test類中的方法調用代碼比較多,在我們的實際應用中可以通過配置文件來來簡化客戶端的調用實現。另外也可以通過動態代理來實現簡單的AOP


 

 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章