浏览 332 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-11-10
Spring2之后引入了AspectJ的Pointcut表达式,相应的也可以使用@target这个标志符来指定pointcut,但在近来测试这个标志符的时候遇到几个问题,提出来,看大家有何看法!?
1-@target在spring reference中,开始定义的时候,意思是当前运行的对象如果标注了@target所指定的Annotation的话,则对象内所有joinpoint(method execution in spring)将被匹配,但到Sample那个部分的时候,意思好像又变成“目标对象如果标注了@target指定的Annotation,目标对象内的所有joinpoint将被匹配”,这个是疑点之一; 2-如果我指定@target(MyAnnotation)作为pointcut表达式的话,当对象Foo标注有MyAnnotation,并且作为Target被拦截,还好,可以成功,但是,如果我指定另一个对象作为Target,那么不好意思,空指针异常,令我匪夷所思,即使pointcut不对该对象进行匹配,也不应该抛出空指针异常啊?! Exception in thread "main" java.lang.NullPointerException at org.aspectj.weaver.reflect.ShadowMatchImpl$RuntimeTestEvaluator.visit(ShadowMatchImpl.java:182) at org.aspectj.weaver.ast.HasAnnotation.accept(HasAnnotation.java:31) at org.aspectj.weaver.reflect.ShadowMatchImpl$RuntimeTestEvaluator.matches(ShadowMatchImpl.java:121) at org.aspectj.weaver.reflect.ShadowMatchImpl.matchesJoinPoint(ShadowMatchImpl.java:78) at org.springframework.aop.aspectj.AspectJExpressionPointcut.matches(AspectJExpressionPointcut.java:297) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy0.isInterceptable(Unknown Source) at org.darrenstudio.books.unveilspring.aop.pointcut.aspectj.AjExpressionTester.testTargetAnnotationPontcut(AjExpressionTester.java:94) at org.darrenstudio.books.unveilspring.aop.pointcut.aspectj.AjExpressionTester.main(AjExpressionTester.java:44) 哪位能够对这种情况给予分析?! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |


