java aop实用小案例

spring配置文件

 


 

   
     
  


package com.test;

import java.lang.reflect.Method;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;


public class MethodTimeAdviceInterceptor implements MethodBeforeAdvice, AfterReturningAdvice {

private static final Logger logger=LoggerFactory.getLogger(MethodTimeAdviceInterceptor.class);


    long tt = 0;

    public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
        tt = System.currentTimeMillis();
    }

    public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
        long lastTime = System.currentTimeMillis() - tt;
        StringBuffer buf =
                new StringBuffer("EXECUTE:(").append(arg1.getName()).append(") BEGIN=").append(tt).append(", END=").append(System.currentTimeMillis())
                        .append(", ELAPSE=").append(lastTime);
        if (logger.isDebugEnabled()) {
            logger.debug(buf.toString());
        }
    }
}


1:MethodBeforeAdvice   before  在执行service方法之前,或者任意方法之前执行

2:AfterReturningAdvice  afterReturning  在执行方法之后,或者任意方法之后执行

并且,MethodBeforeAdvice和AfterReturningAdvice,也可以单独拿来配置重写,至于这个就不在这多说了。

这个案例是做了一个性能统计,即方法执行的一个时间效率统计。spring 的 aop 有很多种方法,当然在这里也只是其中一个罢了。采用的一个动态代理机制

你可能感兴趣的:(java aop实用小案例)