spring的切面表达式怎么理解?execution(* com.service.*.*(..))

单曲循环shield 发布于 2017/04/02 17:05
阅读 905
收藏 0

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

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

加载中
0
juck
juck

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

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

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

例如   

com.service.a.Class,  

com.service.b.Class

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

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

 

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