您的位置:首页 > 运维架构

controller aop

2016-04-13 11:31 218 查看
<!-- 打开aop 注解 -->

<aop:aspectj-autoproxy proxy-target-class="true" />

<!-- 覆盖pafa5 配置,新加 proxyTargetClass=true 选项 -->

<bean id="_sar_advisor_auto_proxy_creator"

class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">

<property name="advisorBeanNamePrefix" value="_sar_" />

<property name="usePrefix" value="true" />

<property name="proxyTargetClass" value="true" />

</bean>

@Component

@Aspect

public class AccessTimeStatisticAdvice {

protected Log logger = org.apache.commons.logging.LogFactory.getLog(getClass());

@Around("within(@org.springframework.stereotype.Controller *)")

public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {

logger.info("-------------------------------进入统计时间------------------------");

String className =pjp.getTarget().getClass().getName();

String methodName = pjp.getSignature().getName();

long startTime = System.currentTimeMillis();

Object object = pjp.proceed();// 执行该方法

long endTime = System.currentTimeMillis();

long duration = endTime - startTime;

logger.info("startTime:"+new Date().toLocaleString()+" className:"+className+" methodName:"+methodName+" runTime:"+duration);

logger.info("-------------------------------退出统计时间---------------------------");

return object;

}

}

Object[] args = pjp.getArgs();

Class[] argsClazz = new Class[args.length];

//Controller中所有方法的参数,前两个分别为:Request,Response

argsClazz[0] = HttpServletRequest.class;

argsClazz[1] = HttpServletResponse.class;

//第三个为保存中的上传的Model

if (args.length == 3) {

argsClazz[2] = args[2].getClass();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: