spring-aop 的 基础使用 -3 - 切点表达式 的提取、复用

spring-aop 的 基础使用(啥是增强类、切点、切面)- 2

的基础上,

这里说的是,切点表达式 的 提取 和 复用

目录

MyAdviceCopy类

java 复制代码
package com.english.advice;

import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

/**
 * 切点表达式 的 提取 和 复用
 *  方式1、当前类中提取(不推荐)
 *      首先:定义一个空方法 public void pc(){}
 *      然后,@Pointcut("execution(* com..impl.*.*(..))") 修饰 pc 方法
 *      最后,在别的 增强注解中使用即可,例如:
 *              @After("pc()")
 *              public void after(){
 *                  System.out.println("after");
 *              }
 *
 *  方式2、创建一个存储切点的类
 *      只不过使用的时候,要这样:类的权限定符.方法名()
 *
 */
@Aspect
@Component
public class MyAdviceCopy {

    @Pointcut("execution(* com..impl.*.*(..))")
    public void pc(){}

	// 方式1 的使用
    @After("pc()")
    public void after(){
        System.out.println("after");
    }

	// 方式2 的使用
    @Before("com.english.pointcut.MyPointCut.pc()")
    public void start(){
        System.out.println("start");
    }

	// 方式2 的使用
    @AfterThrowing("com.english.pointcut.MyPointCut.mypc()")
    public void error(){
        System.out.println("error");
    }
}

MyPointCut 类(上面用到了)

java 复制代码
package com.english.pointcut;

import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component
public class MyPointCut {
    @Pointcut("execution(* com..impl.*.*(..))")
    public void pc(){}

    @Pointcut("execution(* com.english.service.impl.*.*(..))")
    public void mypc(){}
}
相关推荐
带刺的坐椅1 小时前
用 ChatModel 构建 LLM 驱动的 Java 应用
java·ai·llm·solon·rag·chatmodel
用户3721574261353 小时前
Java 将 Word 文档转换为 Markdown:基础转换与导出选项详解
java
行者全栈架构师3 小时前
PolarDB + Spring Boot 实战:从自建MySQL到云原生数据库的零停机迁移
java·后端·架构
karry_k19 小时前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
karry_k19 小时前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
SamDeepThinking1 天前
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比
java·后端·程序员
她的男孩1 天前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
荣码1 天前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
plainGeekDev1 天前
Gson → kotlinx.serialization
android·java·kotlin