小小程序員
BlogJava
|
首頁
|
發新隨筆
|
發新文章
|
|
|
管理
最簡單的動態代理實例(spring基于接口代理的AOP原理)
JDK的動態代理是基于接口的
package
?com.open.aop;
public
?
interface
?BusinessInterface?
{
????
public
?
void
?processBusiness();
}
目標對象
package
?com.open.aop;
public
?
class
?BusinessObject?
implements
?BusinessInterface?
{
????
public
?
void
?processBusiness()?
{
????????System.out.println(
"
action
"
);
????}
}
代理對象
package
?com.open.aop;
import
?java.lang.reflect.InvocationHandler;
import
?java.lang.reflect.Method;
import
?java.lang.reflect.Proxy;
public
?
class
?LogHandler?
implements
?InvocationHandler?
{
????
private
?Object?delegate;
????
public
?Object?binder(Object?delegate)?
{
????????
this
.delegate
=
delegate;
????????
return
?Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
????????????????delegate.getClass().getInterfaces(),
this
);
????}
????
public
?Object?invoke(Object?proxy,?Method?method,?Object[]?args)
????????????
throws
?Throwable?
{
????????Object?obj?
=
?
null
;
????????System.out.println(
"
對象方法調用前
"
);
????????
try
?
{
????????????obj?
=
?method.invoke(delegate,?args);
????????}
?
catch
?(Exception?e)?
{
????????}
????????System.out.println(
"
對象方法調用后
"
);?
????????
return
?obj;
????}
}
測試類
package
?com.open.aop;
import
?java.lang.reflect.InvocationHandler;
import
?java.lang.reflect.Proxy;
public
?
class
?Test?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????BusinessInterface?bi?
=
?(BusinessInterface)?
new
?LogHandler()
????????????????.binder(
new
?BusinessObject());
????????bi.processBusiness();
????}
}
輸出結果
對象方法調用前
action
對象方法調用后
發表于 2006-06-09 10:20
~小Q
閱讀(1651)
評論(1)
編輯
收藏
所屬分類:
『
Spring
』
評論
#
re: 最簡單的動態代理實例(spring基于接口代理的AOP原理)
挺不錯 簡單易懂
凝固
評論于 2007-10-05 10:49
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
圖解spring mvc
Quartz的cron表達式
在spring利用javamail,quartz定時發送郵件
spring對java遠程調用的簡化(三)之HTTPinvoker
spring對java遠程調用的簡化(二)之Hessian,Burlap
spring對java遠程調用的簡化(一)之RMI
spring中事務的屬性
事務的特點以及spring提供事務管理器的簡介
ProxyFactoryBean屬性介紹
spring中基礎核心接口介紹
<
2006年6月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
公告
spring-誰與爭鋒
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
『
eclipse
』(2)
(rss)
『
Flash
』(1)
(rss)
『
JavaScript
』(1)
(rss)
『
Maven
』(1)
(rss)
『
Spring
』(17)
(rss)
『
springside
』(1)
(rss)
『
匯編
』(4)
(rss)
『
計劃
』(1)
(rss)
相冊
spring
Blog
論壇
積分與排名
積分 - 63029
排名 - 842
最新評論
1.?re: 在spring利用javamail,quartz定時發送郵件[未登錄]
感覺不錯嗎、
--xiaoxiao
2.?re: JavaScript中的arguments,callee,caller,call,appy
不錯啊
--artwl
3.?re: JavaScript中的arguments,callee,caller,call,appy[未登錄]
注意,arguments[0] 是對的。arguments是一個Object。
--你好
4.?re: JavaScript中的arguments,callee,caller,call,appy
評論內容較長,點擊標題查看
--zhangsir199
5.?re: Maven的eclipse插件使用的flash教程[未登錄]
除了插件是真的之外,其他怎么全是假的?
--王子
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 ~小Q
主站蜘蛛池模板:
磐安县
|
大城县
|
林芝县
|
岢岚县
|
钦州市
|
河西区
|
江门市
|
新巴尔虎左旗
|
闸北区
|
佛冈县
|
青浦区
|
台州市
|
闽清县
|
古丈县
|
贵港市
|
金溪县
|
鲁山县
|
河南省
|
丘北县
|
玉溪市
|
资阳市
|
温州市
|
富裕县
|
松阳县
|
长治县
|
田林县
|
密山市
|
理塘县
|
额济纳旗
|
慈溪市
|
汉中市
|
洞口县
|
吉木乃县
|
无为县
|
图们市
|
贡嘎县
|
香港
|
罗山县
|
抚顺县
|
筠连县
|
蒲城县
|