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+注解所在的类路径。

相关推荐
自学互联网7 分钟前
使用Python构建钢铁行业生产监控系统:从理论到实践
开发语言·python
合作小小程序员小小店7 分钟前
桌面开发,在线%医院管理%系统,基于vs2022,c#,winform,sql server数据
开发语言·数据库·sql·microsoft·c#
无心水12 分钟前
【Python实战进阶】7、Python条件与循环实战详解:从基础语法到高级技巧
android·java·python·python列表推导式·python条件语句·python循环语句·python实战案例
一点★13 分钟前
“equals”与“==”、“hashCode”的区别和使用场景
java·开发语言
N***H48619 分钟前
SpringCloud实战十三:Gateway之 Spring Cloud Gateway 动态路由
java·spring cloud·gateway
十一.36619 分钟前
79-82 call和apply,arguments,Date对象,Math
开发语言·前端·javascript
合作小小程序员小小店34 分钟前
桌面开发,下午茶甜品管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·c#
s***w1121 小时前
SpringMVC新版本踩坑[已解决]
java
老李头喽1 小时前
走进单元测试
java·单元测试
就叫飞六吧1 小时前
Spring MVC 接口命名为什么会有 *.do/actions等身影?
java·spring·mvc