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(){}
}
相关推荐
Re_zero7 小时前
Java新手避坑:为什么我劝你放弃 scanner.nextInt()?
java
Good_Starry8 小时前
Java——反射
java
又是忙碌的一天8 小时前
SpringBoot 创建及登录、拦截器
java·spring boot·后端
fox_mt8 小时前
AI Coding - ClaudeCode使用指南
java·ai编程
毕设源码-郭学长9 小时前
【开题答辩全过程】以 基于SSM的高校运动会管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
qq_5470261799 小时前
Maven 使用指南
java·maven
xiaolyuh1239 小时前
Arthas修改类(如加日志)的实现原理
java
栗子叶9 小时前
Java对象创建的过程
java·开发语言·jvm
有一个好名字9 小时前
力扣-从字符串中移除星号
java·算法·leetcode