AOP切入点表达式 ——within表达式 、execution()表达式
生活随笔
收集整理的這篇文章主要介紹了
AOP切入点表达式 ——within表达式 、execution()表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
支持切點標識符
Spring AOP支持使用以下AspectJ切點標識符(PCD),用于切點表達式:
- execution: 用于匹配方法執行連接點。 這是使用Spring AOP時使用的主要切點標識符。 可以匹配到方法級別 ,細粒度
- within: 只能匹配類這級,只能指定類, 類下面的某個具體的方法無法指定, 粗粒度
- this: 匹配實現了某個接口:this(com.xyz.service.AccountService)
- target: 限制匹配到連接點(使用Spring AOP時方法的執行),其中目標對象(正在代理的應用程序對象)是給定類型的實例。
- args: 限制與連接點的匹配(使用Spring AOP時方法的執行),其中變量是給定類型的實例。 AOP) where the arguments are instances of the given types.
- @target: 限制與連接點的匹配(使用Spring AOP時方法的執行),其中執行對象的類具有給定類型的注解。
- @args: 限制匹配連接點(使用Spring AOP時方法的執行),其中傳遞的實際參數的運行時類型具有給定類型的注解。
- @within: 限制與具有給定注解的類型中的連接點匹配(使用Spring AOP時在具有給定注解的類型中聲明的方法的執行)。
- @annotation:限制匹配連接點(在Spring AOP中執行的方法具有給定的注解)。
?
訪問修飾符:可不寫 可以匹配任何一個訪問修飾符
返回值:如果是jdk自帶類型可以不用寫完整限定名,如果是自定義類型需要寫上完整限定名,如果被切入的方法返回值不一樣可以使用* 代表所有的方法值都能匹配
包名:cn.* == cn.dym == cn.任意名字 但是只能匹配一級 比如 cn.dym.service就無法匹配
如果要cn.dym.service ==>cn.dym.service , cn.dym.* ==>cn.dym.service.impl就無法匹配
cn.dym..* ==>cn.dym.service.impl 可以匹配
?
類名: 可以寫*,代表任何名字的類名。 也可以模糊匹配 *ServiceImpl==> UserServiceImpl ==>RoleServiceImpl
方法名:可以寫*,代表任何方法。 也可以模糊匹配 *add==> useradd ==>roleadd
參數:如果是jdk自帶類型可以不用寫完整限定名,如果是自定義類型需要寫上完整限定名。 如果需要匹配任意參數 可以寫:..
總結
以上是生活随笔為你收集整理的AOP切入点表达式 ——within表达式 、execution()表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AOP的相关代理
- 下一篇: Nacos注册中心——启动相关的配置