____________________________________________________________________________________________________
package com.chuangqishijie.app;
import java.util.Arrays;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
/**
* @author qizhentao
* @version V1.0
*/
@Aspect // 指定是个切面
@Component // 注入到spring容器
public class Aspact_1 {
/**
* 前通知
* 指定某包下(所有类 所有方法 所有参数..*.*(..)) : execution(* com.chuangqishijie.controller..*.*(..))
*
* @param qzt
*/
@Before("execution(* com.chuangqishijie.controller..*.*(..))")
public void before(JoinPoint jp) {
System.out.println("调用类: " + jp.getTarget());
System.out.println("调用方法: " + jp.getSignature().getName());
System.out.println("方法参数:" + Arrays.toString(jp.getArgs()));
// 打印 :
// 调用类: [email protected]
// 调用方法: userLogin
// 方法入参:[123456, 123456]
}
/**
* 后置通知
*/
@After("execution(* com.chuangqishijie.controller..*.*(..))")
public void after(){ }
/**
* 环绕通知
* @throws Throwable
*/
@Around("execution(* com.chuangqishijie.controller..*.*(..))")
public void around(ProceedingJoinPoint proceeding) throws Throwable{
System.out.println("开始");
proceeding.proceed();
System.out.println("结束");
}
}