小小程序員
BlogJava
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
|
|
管理
最簡(jiǎn)單的動(dòng)態(tài)代理實(shí)例(spring基于接口代理的AOP原理)
JDK的動(dòng)態(tài)代理是基于接口的
package
?com.open.aop;
public
?
interface
?BusinessInterface?
{
????
public
?
void
?processBusiness();
}
目標(biāo)對(duì)象
package
?com.open.aop;
public
?
class
?BusinessObject?
implements
?BusinessInterface?
{
????
public
?
void
?processBusiness()?
{
????????System.out.println(
"
action
"
);
????}
}
代理對(duì)象
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(
"
對(duì)象方法調(diào)用前
"
);
????????
try
?
{
????????????obj?
=
?method.invoke(delegate,?args);
????????}
?
catch
?(Exception?e)?
{
????????}
????????System.out.println(
"
對(duì)象方法調(diào)用后
"
);?
????????
return
?obj;
????}
}
測(cè)試類
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();
????}
}
輸出結(jié)果
對(duì)象方法調(diào)用前
action
對(duì)象方法調(diào)用后
發(fā)表于 2006-06-09 10:20
~小Q
閱讀(1650)
評(píng)論(1)
編輯
收藏
所屬分類:
『
Spring
』
評(píng)論
#
re: 最簡(jiǎn)單的動(dòng)態(tài)代理實(shí)例(spring基于接口代理的AOP原理)
挺不錯(cuò) 簡(jiǎn)單易懂
凝固
評(píng)論于 2007-10-05 10:49
回復(fù)
更多評(píng)論
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
圖解spring mvc
Quartz的cron表達(dá)式
在spring利用javamail,quartz定時(shí)發(fā)送郵件
spring對(duì)java遠(yuǎn)程調(diào)用的簡(jiǎn)化(三)之HTTPinvoker
spring對(duì)java遠(yuǎn)程調(diào)用的簡(jiǎn)化(二)之Hessian,Burlap
spring對(duì)java遠(yuǎn)程調(diào)用的簡(jiǎn)化(一)之RMI
spring中事務(wù)的屬性
事務(wù)的特點(diǎn)以及spring提供事務(wù)管理器的簡(jiǎn)介
ProxyFactoryBean屬性介紹
spring中基礎(chǔ)核心接口介紹
<
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-誰與爭(zhēng)鋒
常用鏈接
我的隨筆
我的文章
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
『
eclipse
』(2)
(rss)
『
Flash
』(1)
(rss)
『
JavaScript
』(1)
(rss)
『
Maven
』(1)
(rss)
『
Spring
』(17)
(rss)
『
springside
』(1)
(rss)
『
匯編
』(4)
(rss)
『
計(jì)劃
』(1)
(rss)
相冊(cè)
spring
Blog
論壇
積分與排名
積分 - 62940
排名 - 842
最新評(píng)論
1.?re: 在spring利用javamail,quartz定時(shí)發(fā)送郵件[未登錄]
感覺不錯(cuò)嗎、
--xiaoxiao
2.?re: JavaScript中的arguments,callee,caller,call,appy
不錯(cuò)啊
--artwl
3.?re: JavaScript中的arguments,callee,caller,call,appy[未登錄]
注意,arguments[0] 是對(duì)的。arguments是一個(gè)Object。
--你好
4.?re: JavaScript中的arguments,callee,caller,call,appy
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--zhangsir199
5.?re: Maven的eclipse插件使用的flash教程[未登錄]
除了插件是真的之外,其他怎么全是假的?
--王子
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 ~小Q
主站蜘蛛池模板:
玉屏
|
江门市
|
长岭县
|
团风县
|
榆树市
|
大关县
|
新邵县
|
海阳市
|
龙陵县
|
儋州市
|
汽车
|
三亚市
|
承德市
|
固阳县
|
宜都市
|
太康县
|
宜城市
|
上蔡县
|
桐柏县
|
西峡县
|
荔波县
|
广汉市
|
江津市
|
营山县
|
宁国市
|
庆安县
|
酉阳
|
施甸县
|
沁源县
|
河西区
|
丹寨县
|
安图县
|
科技
|
浦北县
|
贵德县
|
三都
|
客服
|
潞城市
|
北安市
|
新野县
|
安乡县
|