zoukankan      html  css  js  c++  java
  • 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/>

    缘于生活,而归于工作。本人所书,而意于分享。 如有转载,请注明出处! --活出自己范儿
  • 相关阅读:
    &lt;Android&gt;greenrobot-EventBus,guava-Event Bus的异步实现
    MySQL Study之--MySQL用户及权限管理
    关于Apacheserver的訪问控制
    Jquery改动页面标题title其他JS失效
    P3742 umi的函数
    P3717 [AHOI2017初中组]cover
    P2261 [CQOI2007]余数求和
    P1423 小玉在游泳
    P1888 三角函数
    3295 落单的数 九章算法面试题
  • 原文地址:https://www.cnblogs.com/Small-sunshine/p/8128321.html
Copyright © 2011-2022 走看看