浏览 3971 次
锁定老帖子 主题:Pointcut命名有可能导致错误
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-02-28
@Aspect public class AndyaoAspect { @Pointcut("execution(* com.andyao.Repository.get(java.lang.Integer))&& args(id)") public void get(Integer id){ } @Around("get(id)") public Object fromCache(ProceedingJoinPoint pjp, Integer id) throws Throwable { ... } } 这段代码看上去没有什么问题,但是真正执行中,会抛出exception @Around("get(id)") java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 6 翻阅文档发现问题所在: 写道
其他的切入点类型
所以在使用spring AOP的时候不能以上面的诸如call,get等命名,不然就会报异常。
完整的AspectJ切入点语言支持额外的切入点指定者,但是 Spring不支持这个功能。 他们分别是call, initialization, preinitialization, staticinitialization, get, set, handler, adviceexecution, withincode, cflow, cflowbelow, if, @this 和 @withincode。 在Spring AOP中使用这些指定者将会导致抛出IllegalArgumentException异常。 Spring AOP支持的切入点指定者可能在将来的版本中得到扩展,不但支持更多的AspectJ 切入点指定者(例如"if"),还会支持某些Spring特有的切入点指定者,比如"bean"(用于匹配bean的名字)。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |