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(){}
}
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里3 天前
java中的继承和多态的区别
java
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖3 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时3 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang3 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi3 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号3 天前
java函数式编程--入门基础
java·编程·函数式编程