sampleraspect.java

来自「spring+acegi编写的网上书城」· Java 代码 · 共 48 行

JAVA
48
字号
package net.livebookstore.jmx;

import net.livebookstore.web.filter.PerformanceFilter;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

/**
 * Aspect for Sampler.
 * 
 * @spring.bean id="samplerAspect"
 * 
 * @author Xuefeng
 */
@Aspect
public class SamplerAspect {

    private Log log = LogFactory.getLog(getClass());

    private Object doSample(ProceedingJoinPoint pjp, ThreadLocal<Long> tl) throws Throwable {
        long start = System.currentTimeMillis();
        try {
            return pjp.proceed();
        }
        finally {
            long last = System.currentTimeMillis() - start;
            log.info("doSample execute " + last + "ms.");
            Long acc = tl.get();
            if(acc!=null)
                tl.set(new Long(acc.longValue() + last));
        }
    }

    @Around("execution(* net.livebookstore.business.BusinessService.*(..))")
    public Object businessExecution(ProceedingJoinPoint pjp) throws Throwable {
        return doSample(pjp, PerformanceFilter.businessPerf);
    }

    @Around("execution(* net.livebookstore.dao.*Dao.*(..))")
    public Object daoExecution(ProceedingJoinPoint pjp) throws Throwable {
        return doSample(pjp, PerformanceFilter.daoPerf);
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?