定义aop切面定义aop切面

____________________________________________________________________________________________________

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("结束");
    }
}
 

相关文章: