以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  [合集] AOP中的主要技术  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=10263)


--  作者:admin
--  发布时间:9/23/2004 12:40:00 AM

--  [合集] AOP中的主要技术
● [合集] AOP中的主要技术发信人: diaochong (静静的雕虫~~小猪), 信区: J2EE
标  题: [合集] AOP中的主要技术
发信站: BBS 水木清华站 (Tue Mar 30 09:40:38 2004), 站内

【 以下文字转载自 JavaClub 讨论区 】
发信人: diaochong (静静的雕虫~~小猪), 信区: JavaClub
标  题: [合集] AOP中的主要技术
发信站: BBS 水木清华站 (Tue Mar 30 09:40:11 2004), 站内

☆─────────────────────────────────────☆  
gty (宜良-丽江-蝴蝶泉) 于  (Fri Feb 21 02:26:15 2003)  提到:

   1.Method Interceptor
   使用AOP方法,我们可以在运行时产生某个类的Proxy类。例如
   UserProxy继承User


   getName()       invoke()            invoke()          getName()
   --->UserProxy------->InterceptorA----->InterceptorB--...--->User



   2.“多重继承”
   在产生UserProxy时,还可以同时给它其他接口使其实现。当UserProxy
   实例化时,同时也会创建这些接口的Proxy.
   例如需要实现Node接口,Node接口定义了方法getFolder()

  getFolder()   getFolder()       getFolder
   --->UserProxy ------> NodeProxy ----> Node

   当然,在NodeProxy调用Node的过程中,也可以有Interceptor.

        3 Runtime Attribute
就是利用java doc注释,进行编程。传统情况下,我
们只是把java doc作为注释,并不在运行时使用,现在,
这些java doc也可以作为程序运行时的一个要素了。
  ---------------------
  | 示例:                                                             |
        |       @magic.tx type=required              |
        |   public void makeOrder(Order order) { |
        |     ...
|
        |   };
|
        |                                        |
        ------------------------------------------
        在这个例子中,运行时,系统可以通过API访问到
@magic.tx的type是required,从而控制Transaction。



☆─────────────────────────────────────☆  
  hax (海曦) 于  (Fri Feb 21 03:16:30 2003)  提到:

最好给点实际实现的代码,还有最后一个用javadoc的例子没看懂。



☆─────────────────────────────────────☆  
bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Fri Feb 21 08:52:58 2003)  提?


有example么,觉得很有价值,但不知具体怎么实现



☆─────────────────────────────────────☆  
  gty (宜良-丽江-蝴蝶泉) 于  (Fri Feb 21 09:55:48 2003)  提到:


代码已经check in到sourceforge.net/projects/magicserver上了。

如果周末有时间,我会把aop这一块单独release出来。



☆─────────────────────────────────────☆  
  microweb (深呼吸,闭好你的眼睛) 于  (Fri Feb 21 20:30:52 2003)  提到:


☆─────────────────────────────────────☆  
microweb (深呼吸,闭好你的眼睛) 于  (Sat Feb 22 13:16:18 2003)  提到:




☆─────────────────────────────────────☆  
  gty (宜良-丽江-蝴蝶泉) 于  (Sat Feb 22 14:49:03 2003)  提到:

主要是习惯,另外由于数据不复杂,尽量简单吧

Java doc的格式最简单
        @key value

xdoclet的格式作乐扩展
        @key subkey1=value1 subkey2=value2


☆─────────────────────────────────────☆  
  gty (宜良-丽江-蝴蝶泉) 于  (Sat Feb 22 15:28:24 2003)  提到:


这要从动态Proxy的基本构成说起,动态Proxy
一般具有下面几个元素:

1. 目标类,被“加工”的接口或类。JDK Dynamic Proxy只
能加工接口,而CGLIB还可以加工类,因为它利用了字节
码工程。
例如,我们可以把User类加工。

以下的元素都是可选的。

2. Interceptor[]。Proxy类把被调用的方法和参数传递给
Interceptor。
例如,我们可以提供RmiInterceptor,HibernateInterceptor.

3. Target,目标对象。每个Proxy对象一般是和特定的
目标对象绑定的。目标对象是目标类的一个实例。
Interceptor可以将调用最终传递给目标对象执行。
例如,userProxy1的目标对象是user1

4. writeReplace函数,这是为了定义Proxy如何实例化。

以上1-4,是Proxy类的基本元素,我们可以把对Proxy类
的定义称为一个Aspect.

Aspect还有一个强大的功能是可以嵌套。我们把被嵌套
的Aspect称为SideAspect(这在AOP理论中并没有)。

5. SideAspect[], 在定义Aspect时,还可以提供多个
SideAspect。例如为UserProxy类提供nodeAspect。
nodeAspect的目标类是Node接口。

这样,UserProxy既继承User类,也会实现Node接口。

那么Proxy对象在接到对Node接口的方法调用时,该如何做呢?
我们知道目标对象user1并没有实现Node接口。

窍门在Interceptor上。我们可以实现一个特殊的Interceptor,
让它接到方法调用时,判断是否属于SideAspect的目标类,
如果属于,则利用SideAspect创建一个Proxy对象,并把
调用传递给它。

也就是说,调用被传递给了nodeProxy实例。nodeProxy
如何处理,就和一般的Proxy的调用过程一样了,也要
经过intercpetor,也有可能有自己的sideAspects.


☆─────────────────────────────────────☆  
Erratic (漂砾) 于  (Sun Feb 23 11:53:15 2003)  提到:



哪儿可以找到关于AOP基本知识的资料?




☆─────────────────────────────────────☆  
microweb (深呼吸,闭好你的眼睛) 于  (Sun Feb 23 14:00:19 2003)  提到:


aosd.net



☆─────────────────────────────────────☆  
  bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Sun Feb 23 17:39:08 2003)  提?

我GOOGLE了一下,发现中文的资料要么比较虚要么比较乱,只能大概知道是怎么样的
英文又没时间看……





☆─────────────────────────────────────☆  
  microweb (深呼吸,闭好你的眼睛) 于  (Sun Feb 23 14:00:19 2003)  提到:


aosd.net



☆─────────────────────────────────────☆  
  bakkhos (笨瓶子) 志存高远·思考永不停步 ) 于  (Sun Feb 23 17:39:08 2003)  提?


我GOOGLE了一下,发现中文的资料要么比较虚要么比较乱,只能大概知道是怎么样的
英文又没时间看……

※ 修改:·qyjohn 于 Mar 30 09:41:48 修改本文·[FROM:   219.238.203.*]           

索引页面|上一篇|下一篇


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
58.594ms