论坛首页 Java版 企业应用

怎么切才能切得好

浏览 493 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-08-04 关键字: aop
自己正在写一个轻量的AOP工具,目的就是在没有Spring或者其他AOP框架的情况下也能得到AOP服务。原理当然是基于Java的动态代理,但是大家都知道这个要运作起来的前提是需要有Interface,也就是需要被增强(无论是前置后置还是环绕性的)的方法必须是在一个接口中申明了的。
这样问题就来了,如果我要对我的领域模型对象的方法进行增强,我就需要为这些对象重新写接口(在领域建模的时候我没有写接口的),这样的话好像违反了POJO原理,而且感觉为每一个业务对象写接口好像本末倒置了(正常情况下应该是规定好了接口,然后才实现之)。是不是应该切在Action层而不是Service层才对?
不知道Spring中是怎么实现的,请了解的朋友说明一下


另外一个问题,不知道有没有人采用aopalliance来写aop
其中MethodInvocation中的proceed()方法是将处理向下发送到下一个MethodInterceptor,但是API中并没有给出如果将MethodInterceptor的集合跟MethodInvocation关联(或者叫注册)的方法,一个MethodInvocation如果知道这个切入点上有哪些增强处理或者下一个增强是谁呢?
   
时间:2008-08-05
问题一.
spring 中是可以选择到底是用jdk的动态代理,还是CGLIB的动态代理.
使用CGLIB就不强制你实现接口了.
问题二.
aopalliance 中定义了一种EL表达式专门用来指定切入点上需要哪些增强(这个我本身没有用过,但是spring2.5 reference 中的aop编程中有介绍具体用法的)
   
0 请登录后投票
时间:2008-08-05
7upCat 写道
问题一.
spring 中是可以选择到底是用jdk的动态代理,还是CGLIB的动态代理.
使用CGLIB就不强制你实现接口了.
问题二.
aopalliance 中定义了一种EL表达式专门用来指定切入点上需要哪些增强(这个我本身没有用过,但是spring2.5 reference 中的aop编程中有介绍具体用法的)


1 没有研究Spring,不过貌似对方法的增强好像都是运用的JDK动态代理吧,也一样没有使用接口的方式阿?
2 aopalliance EL? never heard of it before...这个应该不是aopalliance官方的吧,依赖Spring的?
   
0 请登录后投票
时间:2008-08-05
你把spring包里的cglib包去了.试一下用实现接口看跑不跑得通就可以了. 我记得是不行的.^^ 至于2. 我也没有具体研究过.
   
0 请登录后投票
时间:2008-08-08
楼上的可能没有仔细看我的贴,我现在意思就是想不使用接口的情况下将advice切入任何POJO中,CGLIB?
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐