Spring AOP切面日志Demo 配置文件方式

来源:互联网 发布:ps有没有mac版 编辑:程序博客网 时间:2024/06/03 16:32
第一步:配置applicationContext.xml文件:
    <bean id="logAopBean" class="com.demo.common.aop.LogAop"></bean>    <aop:config>        <aop:aspect id="logAspect" ref="logAopBean">            <aop:pointcut expression="execution(* com.demo..*(..))" id="allMethod"/>            <aop:before method="before" pointcut-ref="allMethod" />            <aop:after-throwing method="afterThrowing" pointcut-ref="allMethod" />            <aop:after-returning method="afterReturn" pointcut-ref="allMethod" />            <aop:after method="after" pointcut-ref="allMethod" />        </aop:aspect>    </aop:config>

第二步:日志处理类的写法:

/** * LogAop.java *  * Shanghai NTT DATA Synergy Software Co., Ltd. All Rights Reserved. * @author wyl * @date 2016-10-18 */ package com.demo.common.aop;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;/** * @author wyl * @Description TODO  * @date 2016-10-18 * */public class LogAop {    public void before(JoinPoint call){        String className = call.getTarget().getClass().getName();        String methodName = call.getSignature().getName();        System.out.println("开始执行:"+className+"."+methodName+"()方法...");    }    public void afterThrowing(JoinPoint call){        String className = call.getTarget().getClass().getName();        String methodName = call.getSignature().getName();        System.out.println(className+"."+methodName+"()方法抛出了异常...");    }    public void afterReturn(JoinPoint call){        String className = call.getTarget().getClass().getName();        String methodName = call.getSignature().getName();        System.out.println(className+"."+methodName+"()方法正常执行结束...");    }    public void after(JoinPoint call){        String className = call.getTarget().getClass().getName();        String methodName = call.getSignature().getName();        System.out.println(className+"."+methodName+"()最终执行步骤(finally)...");    }    /*//用来做环绕通知的方法可以第一个参数定义为org.aspectj.lang.ProceedingJoinPoint类型      public Object doAround(ProceedingJoinPoint call) throws Throwable {          Object result = null;          this.before(call);//相当于前置通知          try {              result = call.proceed();              this.afterReturn(call); //相当于后置通知          } catch (Throwable e) {              this.afterThrowing(call); //相当于异常抛出后通知              throw e;        }finally{              this.after(call);  //相当于最终通知          }          return result;      }*/}
原文链接:原文链接

原创粉丝点击