当前位置: 首页 > wzjs >正文

国内什么网站用asp.net网站建设电脑维修数据恢复

国内什么网站用asp.net,网站建设电脑维修数据恢复,企业宣传网站建设需求说明书的模板,做淘客网站用什么程序全面解析 Spring AOP 切入点表达式 大家好,我是钢板兽! Spring AOP(面向切面编程)是我们日常开发中实现日志记录、权限控制、事务管理等功能的神器。而切入点表达式(Pointcut Expression)则是这个神器的“…

全面解析 Spring AOP 切入点表达式

大家好,我是钢板兽!

Spring AOP(面向切面编程)是我们日常开发中实现日志记录、权限控制、事务管理等功能的神器。而切入点表达式(Pointcut Expression)则是这个神器的“瞄准镜”——你想拦哪里,就靠它来精确定位!

本篇文章将带你全面了解 AOP 切入点表达式的写法、含义、常见用法、以及典型场景实战。

文章目录

  • 全面解析 Spring AOP 切入点表达式
    • 1.什么是切入点表达式?
    • 2.切入点表达式详解
      • 2.1`execution`:按方法签名匹配
      • 2.2`within`:匹配某个类或包下的所有方法
      • 2.3`@annotation`:匹配打了特定注解的方法
      • 2.4 `args(...)`:匹配方法参数类型
      • 2.5`@within` / `@target`:匹配类上的注解
      • 2.6`bean(beanName)`:按 Bean 名称匹配
    • 3.实战推荐组合用法
      • 3.1全局统一增强(比如日志)
      • 3.2 精准注解增强
    • 4.表达式参考速查表

1.什么是切入点表达式?

切入点表达式是 Spring AOP 中用于描述增强逻辑应该作用在哪些方法上的一种匹配语法。

搭配 @Aspect@Before@After@Around 等注解使用:

@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {System.out.println("执行方法:" + joinPoint.getSignature().getName());
}

这条表达式的意思是:“匹配 com.example.service 包下所有类的所有方法”。

最常见的表达式是以 execution(...) 开头的,如:

execution(方法修饰符 返回值类型 包名.类名.方法名(参数))

参数可以使用通配符,表示“任意”或“全部”

2.切入点表达式详解

2.1execution:按方法签名匹配

写法含义
execution(* com.example.service.UserService.*(..))匹配 UserService 中所有方法
execution(public void com.example.service.UserService.createUser(..))精确匹配某个方法
execution(* com.example..*Service.*(..))匹配 com.example 包及其子包下所有以 Service 结尾的类的方法
execution(* *(..))匹配所有方法(慎用!)
  • * 表示任意
  • .. 表示任意层级包或任意参数

2.2within:匹配某个类或包下的所有方法

@Within("com.example.service.UserService")

匹配该类的所有方法。

@Within("com.example.service..*")

匹配 service 包及其子包下所有类的方法。


2.3@annotation:匹配打了特定注解的方法

@Before("@annotation(com.example.anno.Log)")

只拦截那些加了 @Log 注解的方法。

2.4 args(...):匹配方法参数类型

@Before("args(java.lang.String)")

匹配第一个参数为 String 类型的方法。

@Before("args(.., int)")

匹配最后一个参数是 int 的方法。

2.5@within / @target:匹配类上的注解

  • @within(MyAnnotation):拦截被注解的类中的所有方法
  • @target(MyAnnotation):和 @within 类似,但作用在代理类上

2.6bean(beanName):按 Bean 名称匹配

@Before("bean(userService)")

只拦截 Bean 名为 userService 的方法,适合用于特定 Spring Bean 的增强。

3.实战推荐组合用法

3.1全局统一增强(比如日志)

@Aspect
@Component
public class LogAspect {@Before("execution(* com.example.service..*.*(..))")public void log(JoinPoint jp) {System.out.println("[LOG] " + jp.getSignature());}
}

3.2 精准注解增强

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Audit {String value() default "";
}// 切面类
@Aspect
@Component
public class AuditAspect {@Before("@annotation(audit)")public void audit(Audit audit) {System.out.println("审计操作模块:" + audit.value());}
}// 业务方法
@Audit("用户模块")
public void updateUser(String name) { ... }

4.表达式参考速查表

表达式描述
execution(* com.example..*.*(..))所有方法
@annotation(Log)有 @Log 注解的方法
within(com.example..*)指定包内的所有类的方法
args(String, ..)第一个参数是 String 的方法
bean(userService)Bean 名为 userService 的对象的方法

如果这篇文章对你有帮助,欢迎点赞、转发、留言。

         | 第一个参数是 String 的方法         |

| bean(userService) | Bean 名为 userService 的对象的方法 |


如果这篇文章对你有帮助,欢迎点赞、转发、留言。

关注我带你学习更多Java后端开发的技术干货 !


文章转载自:

http://QJE3aC6C.LLyqm.cn
http://G9QuDDCH.LLyqm.cn
http://3MtdFwMC.LLyqm.cn
http://us6Q6pEN.LLyqm.cn
http://egAxXuFT.LLyqm.cn
http://RowQloON.LLyqm.cn
http://1KJVr399.LLyqm.cn
http://rlKVnxoz.LLyqm.cn
http://MtQdO3FX.LLyqm.cn
http://6oawkqpE.LLyqm.cn
http://raf3qGdy.LLyqm.cn
http://Lf5thIbg.LLyqm.cn
http://M9PuAqe0.LLyqm.cn
http://pRusN1Hj.LLyqm.cn
http://nKoJa4ve.LLyqm.cn
http://QHPjZbSU.LLyqm.cn
http://p3JyLvZv.LLyqm.cn
http://clOBTX7M.LLyqm.cn
http://Y5P8fsDe.LLyqm.cn
http://AbjPvpSR.LLyqm.cn
http://mquY7ryt.LLyqm.cn
http://TntrKXOs.LLyqm.cn
http://0RgDZmrS.LLyqm.cn
http://eOi055mO.LLyqm.cn
http://tQ9CQYRr.LLyqm.cn
http://93EhnJG4.LLyqm.cn
http://3VSEc62F.LLyqm.cn
http://ok9wMZsj.LLyqm.cn
http://ysaU3SrD.LLyqm.cn
http://tYuQs0Ke.LLyqm.cn
http://www.dtcms.com/wzjs/758396.html

相关文章:

  • 上海做企业网站的公司长沙网络销售公司
  • 国内网站建设代理wordpress menu代码
  • 天马网络网站济南公司做网站的价格
  • wordpress相册移植typecho清远网站seo
  • 海口网站排名推广青县有做网站的吗
  • 创建私人网站备案网站名
  • 做直播信号网站网站建设行业发展状况
  • 网站建设互联网推广90设计网站兼职怎么样
  • 网站制作业务外贸高端网站设计公司
  • 网站程序是什么意思网页设计与制作教程 pdf下载
  • jquery做的装修网站线上推广
  • 长春网络推广保定网站建设与seo
  • 个人电脑做网站服务器网站建筑网络学院
  • 个人网站主机的配置域名查询注册
  • wordpress流量站wordpress 注册登陆插件
  • 电子商务网站建设优势服务器上的wordpress
  • 北京企业建站程序电子商务网站建设指导书
  • 网站查询系统怎么做郑州网站建设有限公司
  • 个人业务网站带后台阿里云虚拟主机网站建设
  • 平顶山城市建设局网站手机微信网站怎么做
  • 科技企业网站如何建设百度站长平台推出网站移动化大赛
  • 网站推广策略都有哪些江苏省工程建设招标网站
  • 东莞常平网站设计软件是怎么制作的
  • 写网站建设的软文专业3合1网站建设价格
  • 重庆门户网站开发报价网站建设类论文选题
  • 莱州网站建设有限公司网站按照谁建设 谁负责
  • 金汇网站建设网站开发的需求分析论文
  • 网站搭建后提示建设中织梦更换网站模板
  • 做网站为什么要建站点百度推广二级代理商
  • 小江高端网站建设网页小游戏网站建设