AOP应用描述:抽离系统公共行为进行封装,剥离业务模块,而又被业务模块说依赖的可重用模块
可对业务进行 前置或后置 处理,已达到实际目的。代码中主要以权限、日志、调试等使用
代码示例:
/**
测试切面类
* @author NICEN
*/
@Aspect
public class LogAspects {
/**
* 公共的切入点表达式
* 1、本类引用
* 2、其他的切面引用
*
* @author NICEN
*/
@Pointcut(value = "execution(public int com.test.roc.AOPTEST.*(..))")
public void pointCut(){}
/**
* 前置通知
*
在目标方法之前切入,切入点表达式(指在哪个方法切入)
joinPoint参数一定要出现在参数列表第一位,放在后面会报错
*
* @author NICEN
*/
@Before(value ="pointCut()")
public void logStart(JoinPoint joinPoint){
String methodName = joinPoint.getSignature().getName();
0bject[] args = joinPoint.getArgs();
System.out.println(methodName +"运行。。。参数列表是:"+ Arrays.toString(args));
}
@After(value = "pointCut()")
public void logEnd(){
System.out.println("除法结束。。。");
}
@AfterReturning(value = "pointCut",returning = "result")
public void logReturn(JoinPoint joinPoint,Object result){
String methodName = joinPoint.getSignture().getName();
System.out.println(method +"方法返回 结果为:" + result);
}
@AfterThrowing(value = "pointCut",throwing = "exception")
public void logException(JoinPoint joinPoint,Exception exception){
String methodName = joinPoint.getSignture().getName();
System.out.println(method +"方法异常 异常为:" + exception);
}
}