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/>

    缘于生活,而归于工作。本人所书,而意于分享。 如有转载,请注明出处! --活出自己范儿
  • 相关阅读:
    Report studio交叉表求指定维度和的问题
    Cognos清除本地高速缓存的利与弊
    学习技巧-如何在IBM官网寻找学习资料
    Cognos利用DMR与文本对象设计中国式报表
    Cognos Report Studio 链接查询需要注意的地方2
    linux下自己下载的程序装哪?
    maven编译war包,pom中必须有的几个dependency
    跨站请求伪造解决办法之——过滤referer
    tomcat禁用webdav
    Tomcat配置https
  • 原文地址:https://www.cnblogs.com/Small-sunshine/p/8128321.html
Copyright © 2011-2022 走看看