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");
}
}
spring aop 環繞通知
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.