论坛首页 Java企业应用论坛

怎么切才能切得好

浏览 2565 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-04  
自己正在写一个轻量的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企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics