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("方法报错了...");
}
}