1:定义一个切点类 aop.class 添加 @Aspect注解 和@Componet注解
2: 编写 Pointcut 注解+方法 before注解+方法 After注解+方法 Around注解+方法 (这四个方法分别对应各自的功能实现)
@Aspect
@Component
public class aop {
@Pointcut("execution(* com.example.demo.service.*.*(..))") //声明一个切点
public void checkUser(){
}
@Before("checkUser()") //在方法执行前切入
public void beforeCheck(){
System.out.println("前置方法:我在方法前面");
}
@After("checkUser()") //在方法执行后切入
public void after() {
System.out.println("后置通知:方法正常结束了");
}
@Around("checkUser()") //环绕整个方法的前后
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("进入方法前---环绕通知");
Object o = pjp.proceed();
System.out.println("退出方法后---环绕通知");
return o;
}
}
3:解释上方代码
4:执行结果: