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

相关推荐
关于不上作者榜就原神启动那件事2 分钟前
Java中大量数据Excel导入导出的实现方案
java·开发语言·excel
坚定学代码8 分钟前
基于观察者模式的ISO C++信号槽实现
开发语言·c++·观察者模式·ai
Wang's Blog23 分钟前
Nodejs-HardCore: Buffer操作、Base64编码与zlib压缩实战
开发语言·nodejs
Coder_Boy_29 分钟前
基于SpringAI的在线考试系统设计总案-知识点管理模块详细设计
android·java·javascript
csbysj202031 分钟前
C# 集合(Collection)
开发语言
Assby36 分钟前
如何尽可能精确计算线程池执行 shutdown() 后的耗时?
java·后端
csbysj202044 分钟前
Lua 面向对象编程
开发语言
焰火19991 小时前
[Java]自定义重试工具类
java
SuperherRo2 小时前
JAVA攻防-Shiro专题&断点调试&有key利用链&URL&CC&CB&原生反序列化&加密逻辑
java·shiro·反序列化·有key·利用链·原生反序列化·加密逻辑