spring aop 環繞通知

package com.xin.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;

/**
 * Created by r.x on 2017/8/26.
 */
@Aspect
    // 定義切點
    @Pointcut("execution(java.util.List com.xin.service.A.getA())")
    public void performance() {}

    // 定義環繞通知
    // 若被通知方法有返回值,則環繞通知必須有返回值!返回值內容可以是方法返回值,也可以自定義
    // 環繞通知必須有ProceedingJoinPoint入參。通過調用ProceedingJoinPoint的proceed()方法,使被通知方法正常執行。否則,會造成阻塞
    @Around("performance()")
    public Object log(ProceedingJoinPoint joinPoint) {
        System.out.println("環繞通知---------before");
        Object result = null;
        try {
            result = joinPoint.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        System.out.println("環繞通知---------after");
        return result;
    }

    @Before("performance()")
    public void logB() {
        System.out.println("前置通知---------alone before");
    }

    @After("performance()")
    public void logA() {
        System.out.println("後置通知----------alone after");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章