读书人

请问:使用spring2.0 @AspectJ注解风格

发布时间: 2013-09-11 17:27:30 作者: rapoo

请教:使用spring2.0 @AspectJ注解风格进行AOP编程时遇到问题:传递参数到Advice失败。
请教:使用spring2.0 @AspectJ注解风格进行AOP编程时遇到问题:传递参数到Advice失败。
曾经按照spring2.0-reference-cn的说明试过多次,就是不行,郁闷。
我使用spring2.0,在进行aop应用是使用的是AspectJ 5注解风格
问题:想传递参数到Advice中,但是运行时失败,总是报错,错误stack在最后。
场景:
1. IDE: Eclipse3.2 + MyEclipse5.1, JDK1.5.7
lib: spring.jar(spring2.0),spring-aspects.jar, aspectjrt.jar, aspectjweaver.jar, aopalliance.jar

2. applictationContext-service.xml:


3. Business Service: com.server.aspect.NameParams


4. AfterReturning Advice: com.server.aspect.AfterReturnNameParams
出问题的疑点


5. 调用者Client: com.server.aspect.MyClient


6. 执行MyClient, 结果提示如下错误:
错误堆栈比较多,但是错误不是"dataSource"(第一行中: Error creating bean with name 'dataSource')引起的
"Caused by...."后面是错误源。
因为如果我不传递参数到Advice中,则一切OK.


7.运行成功的写法:不传递参数到Advice。(其它配置及代码不变)
AfterReturning Advice: com.server.aspect.AfterReturnNameParams

@Aspectpublic class AfterReturnNameParams {@AfterReturning("execution(* com.server.aspect.NameParams.compositeName(..))")public void doAfter(Joinpoint joinpoint) {String result = "-------OK------->after returning advice";System.out.println(result);}}



请大家帮助,谢谢。

1 楼 ucgygah 2006-12-14 Object[]obj= joinpoint.getArgs();
System.out.println(obj[0]);
你想要的参数就是根据参数列表的索引得到的. 2 楼 will.jiang 2007-08-29 我也碰到了同样的问题,照文档上说,只要使用args就行
@Before("execution(* somepackage.SomeClass.someMethod(..)) && args(someParam)")
public void before(SomeType someParam){
//do something with 'someParam'
}

但实际运行中总是报错:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'someService' defined in class path resource [somepackage/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor

Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor

郁闷~~ 3 楼 will.jiang 2007-08-29 解决了,使用args就能够成功传递参数到advice中去。

需要加入asm的几个包:asm-2.2.3.jar,asm-commons-2.2.3.jar,asm-util.2.2.3.jar

done!


我的异常网推荐解决方案:org.springframework.beans.factory.BeanCreationException:,http://www.myexception.cn/j2ee/10759.html

读书人网 >编程

热点推荐