Spring Aop切点表达式的提取和复用

TODO:切点表达式的提取和复用

1.当前类中提取
    (1).定义一个空方法
    (2).注解 @Pointcut()
    (3).增强注解中引用切点表达式的方法即可 -> 方法名()
2.创建一个存储切点的类(见下方代码)
    (1).单独维护切点表达式
    (2).其他类的切点方法应用 -> 全类名.方法名()

创建一个存储切点的类

package com.suchuanlin.pointcut;

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

@Component
public class MyPointCut {

    @Pointcut("execution(* com.suchuanlin.service.impl.*.*(..))")
    public void pointcut(){}

}

引用切点表达式

package com.suchuanlin.advice;

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

/**
 * TODO:切点表达式的提取和复用
 * 1.当前类中提取
 *     (1).定义一个空方法
 *     (2).注解 @Pointcut()
 *     (3).增强注解中引用切点表达式的方法即可 -> 方法名()
 * 2.创建一个存储切点的类(见下方代码)
 *     (1).单独维护切点表达式
 *     (2).其他类的切点方法应用 -> 全类名.方法名()
 *
 */

@Component  //当前类交由ioc管理
@Aspect     //开启aspect注解支持
public class LogAdvice {

    /*
    @Pointcut("execution(* com.suchuanlin.service.impl.*.*(..))")
    public void pointcut(){}
    */

    @Before("com.suchuanlin.pointcut.MyPointCut.pointcut()")
    public void before(){
        System.out.println("方法开始了...");
    }

    @After("com.suchuanlin.pointcut.MyPointCut.pointcut()")
    public void after(){
        System.out.println("方法结束了...");
    }

    @AfterThrowing("com.suchuanlin.pointcut.MyPointCut.pointcut()")
    public void error(){
        System.out.println("方法报错了...");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值