You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中两个PointCut表达式的差异及*..部分含义咨询

Spring 切点表达式差异解析

第一个表达式里*..的含义

在Spring AOP的切点表达式规则中,*..是包路径的通配符组合:

  • * 匹配任意单个包名(或类名的一部分)
  • .. 匹配任意层级的包结构,包括当前包、直接子包,甚至深层嵌套的子包
    两者结合后,*..代表匹配任意包路径下的类,不管这个类在根包、当前包还是多级子包里。

两个表达式的核心区别

拆解两个表达式逐一分析:

  1. * *..*Repository.find*(..)

    • *..*Repository部分:能匹配所有包路径下名字以Repository结尾的类,比如com.example.UserRepository、com.example.dao.OrderRepository,甚至当前包下的BookRepository都能命中
    • 整体作用:匹配任意返回值、任意包下以Repository结尾的类中,所有以find开头的方法(参数数量、类型不限)
  2. * *Repository.find*(..)

    • *Repository部分:仅匹配当前包下名字以Repository结尾的类。比如切面定义在com.example包下时,只有com.example.UserRepository能被匹配,com.example.dao.OrderRepository这类子包中的类无法被命中
    • 整体作用:匹配任意返回值、当前包下以Repository结尾的类中,所有以find开头的方法(参数数量、类型不限)

简言之,第一个表达式的匹配范围覆盖所有层级包的Repository类,第二个仅局限于当前包。

内容的提问来源于stack exchange,提问作者firemancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:23:14