package com.carry.sPRing.beans.aop;
import java.awt.List;
import java.util.Arrays;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Component //是个bean
@Aspect //是个切面
public classLogging {
/**
* 在包 com.carry.spring.beans.aop.ArithmeticInterface接口的每一个实现类的每一个方法之前打印一句日志
*
* */
@Before("execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))")
public void beforeMethod(JoinPoint joinpoint){
StringmethodName=joinpoint.getSignature().getName(); //得到当前方法的名字
Object[] args=joinpoint.getArgs(); //得到方法的参数
System.out.println("The Method:"+methodName+" begin "+Arrays.asList(args));
}
/**
* 在包 com.carry.spring.beans.aop.ArithmeticInterface接口的每一个实现类的每一个方法之后打印一句日志,无论是否异常出错
*
* */
@After("execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))")
public void afterMethod(){
System.out.println("The Method end");
}
/**
* 返回通知,在方法正常结束后执行的代码,有异常不显示
* 可以访问方法的返回值
*
* */
@AfterReturning(value="execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))",
returning="res")
public void returnMethod(JoinPoint joinPoint,Objectres){
String mathodName=joinPoint.getSignature().getName();
System.out.println("The Method returnMethod"+".."+mathodName+".."+res);
}
/**
* 异常通知
*
*
* */
@AfterThrowing(value="execution(public intcom.carry.spring.beans.aop.ArithmeticInterface.*(..))",
throwing="thr")
publicvoid returnMethod(JoinPoint joinPoint,Exception thr){
String mathodName=joinPoint.getSignature().getName();
System.out.println("The Method returnMethod"+".."+mathodName+".."+thr);
}
}
新闻热点
疑难解答