Spring AoP的切点匹配

Spring AoP的切点匹配主要使用切点表达式进行匹配,下面是两种常用情况。

1.基于方法匹配

设置表达式,execution()括号里面使用正则表达式匹配注解所在的方法。

复制代码
package com.example.springdemo.demos.a30;

import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author zhou
 * @version 1.0
 * @description TODO
 * @date 2025/11/8 20:12
 */
public class a30 {
    public static void main(String[] args) throws NoSuchMethodException {
        AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
        pointcut.setExpression("execution(* bar())");
        System.out.println(pointcut.matches(T1.class.getMethod("foo"),T1.class));
        System.out.println(pointcut.matches(T1.class.getMethod("bar"),T1.class));
    }
    static class T1{
        @Transactional
        public void foo(){

        }
        public void bar(){

        }
    }
}

2.基于注解匹配

java 复制代码
AspectJExpressionPointcut pointcut1 = new AspectJExpressionPointcut();
        pointcut1.setExpression("@annotation(org.springframework.transaction.annotation.Transactional)");
        System.out.println(pointcut1.matches(T1.class.getMethod("foo"),T1.class));
        System.out.println(pointcut1.matches(T1.class.getMethod("bar"),T1.class));

表达式的值为@annotation+注解所在的类路径。

相关推荐
程序猿20239 小时前
MySQL的逻辑存储结构
java·数据库·mysql
寻星探路9 小时前
【Python 全栈测开之路】Python 进阶:库的使用与第三方生态(标准库+Pip+实战)
java·开发语言·c++·python·ai·c#·pip
海边的Kurisu12 小时前
苍穹外卖日记 | Day1 苍穹外卖概述、开发环境搭建、接口文档
java
C雨后彩虹15 小时前
任务最优调度
java·数据结构·算法·华为·面试
heartbeat..15 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
Jing_jing_X15 小时前
AI分析不同阶层思维 二:Spring 的事务在什么情况下会失效?
java·spring·架构·提升·薪资
SmartRadio17 小时前
CH585M+MK8000、DW1000 (UWB)+W25Q16的低功耗室内定位设计
c语言·开发语言·uwb
rfidunion17 小时前
QT5.7.0编译移植
开发语言·qt
rit843249917 小时前
MATLAB对组合巴克码抗干扰仿真的实现方案
开发语言·matlab
元Y亨H17 小时前
Nacos - 服务发现
java·微服务