• spring-aop 的注释用法


    一、书写增强有效代码

    //切面注释
    @Aspect
    public class errorLogger {

     private static Logger logger = Logger.getLogger(errorLogger.class);

     // 设置切点注释
     @Pointcut("execution(* com.small.server.*.*(..))")
     // 切点
     public void pointcut() {
     }// 这样做更加简洁

     // 前置增强注释
     @Before("pointcut()")
     // 一个参数而已
     public void errorBefore(JoinPoint jp) {
      logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
        + "方法,参数列表为:" + Arrays.toString(jp.getArgs()));
     }

     // 异常抛出异常注释
     @AfterThrowing(pointcut = "pointcut()", throwing = "e")
     public void errorThrowing(JoinPoint jp, RuntimeException e) {
      logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
        + "方法,抛出异常" + e);
     }

     // 后置增强注释
     @AfterReturning(pointcut = "pointcut()", returning = "result")
     public void errorAfterReturning(JoinPoint jp, Object result) {
      logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
        + "方法,返回值为:" + result);
     }

     // 最终增强注释
     @After("pointcut()")
     public void errorAfter(JoinPoint jp) {
      logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
        + "方法结束");
     }

    //环绕增强
     @Around("pointcut()")
     public Object around(ProceedingJoinPoint jp)throws Throwable{
      logger.debug("调用"+jp.getSignature().getName()+"方法,参数列表为:"+Arrays.toString(jp.getArgs()));
      try{
       Object result=jp.proceed();//获得返回值
       logger.debug("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,返回值为:"+result);
       return result;
      }catch(Throwable e){
       logger.debug("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,");
       throw e;
      }finally{
       logger.debug("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法结束");
      }
     }

    }

    二、spring核心配置文件代码

    <context:component-scan  base-package="com.small.logger"/>
     <bean class="com.small.logger.errorLogger"></bean>
     <aop:aspectj-autoproxy/>

    缘于生活,而归于工作。本人所书,而意于分享。 如有转载,请注明出处! --活出自己范儿
  • 相关阅读:
    大华解码器二次开发/C#调用C++DLL
    C# 获取网站页面的句柄
    C# 字节数组 字符数组 字符串 Byte[] Char[] String
    C# 结构体数组 C++ DLL
    Django
    Djano
    Django
    数据分析 02 -Pandas
    数据分析-01 Numpy
    02-正则和xpath
  • 原文地址:https://www.cnblogs.com/Small-sunshine/p/8128321.html
Copyright © 2020-2023  润新知