3
回答
spring的切面表达式怎么理解?execution(* com.service.*.*(..))
终于搞明白,存储TCO原来是这样算的>>>   

请问:execution(* com.service.*.*(..)),其中“.*.*”是什么意思啊?居然可以匹配到service好多层子包下的方法。。

还有,execution(** com.service.*.*(..)),开头第一个和第二个*分别代表什么?

举报
单曲循环shield
发帖于7个月前 3回/718阅

execution(* com.service.*.*(..))

1.第一个*代表方法的返回值    *代表任意返回值

2. com.service.*.*  代表com.service下面的1级子包和2级子包

例如   

com.service.a.Class,  

com.service.b.Class

这些包下面的类都能匹配到

3. 最后的(..)代表方法的任意参数

 

--- 共有 1 条评论 ---
单曲循环shield这里说的一二级子包,我感觉是错的,我配置com.service.*.*;然后测试了com.service.a.A类和com.service.a.b.c.C类都可以被匹配到。 7个月前 回复
楼上的第1、3点我也同意。不过,第2点有点出入。com.service.*.* 前一个*表示任意类,后一个*表示任意方法。
--- 共有 4 条评论 ---
MnameHZJ 回复 @单曲循环shield : 前一个*表示任意类,后一个*表示任意方法。我原话是这么写的。根据语义来说,com.service.a.b.c.C类的方法是匹配不到的。可以贴一下,你的测试代码吗?一起看看。 7个月前 回复
W怪人第一个* 表示方法权限修饰符 返回值,第二个*表示service包下的所以类,第三个*表示类下的所有方法 7个月前 回复
单曲循环shield你确定一个是任意类一个是任意包吗?我配置com.service.*.*;然后测试了com.service.a.A类和com.service.a.b.c.C类都可以被匹配到。 7个月前 回复
小灰灰Blog只有public 方法才能切吧 7个月前 回复
顶部