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(){}
}
相关推荐
camellias_4 小时前
【无标题】
java·tomcat
咸鱼2.04 小时前
【java入门到放弃】需要背诵
java·开发语言
椰猫子5 小时前
Java:异常(exception)
java·开发语言
win x6 小时前
Redis 使用~如何在Java中连接使用redis
java·数据库·redis
星晨雪海6 小时前
基于 @Resource 的支付 Service 多实现类完整示例
java·开发语言
阿维的博客日记6 小时前
什么是逃逸分析
java·juc
Ricky_Theseus6 小时前
C++右值引用
java·开发语言·c++
Rick19937 小时前
Java内存参数解析
java·开发语言·jvm
我是大猴子7 小时前
Spring代理类为何依赖注入失效?
java·后端·spring
勿忘,瞬间7 小时前
多线程之进阶修炼
java·开发语言