Java tutorial
/* * Copyright (c) 2014, lingang.chen@gmail.com All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); */ package com.jmmd.biz.shared.aspect; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import com.jmmd.common.utils.annotation.AspectLogger; /** * Reason: . * * @author chenlg * @version $Id: BizAspect.java, v 0.1 2014224 ?4:23:02 chenlg Exp $ * @since JDK 1.7 */ @Component @Aspect public class BizAspect { private static Logger logger = LoggerFactory.getLogger("BIZ_ASPECT_DIGEST"); /** * */ @Pointcut("execution(* com.jmmd.biz..*.*(..)) ") public void bizPointcut() { // pointcut?Annotation?pointcut } /** * . * * @param jionpoint * @param e */ @AfterThrowing(pointcut = "bizPointcut() && @annotation(aspectLogger)", throwing = "e") public void throwingAdvice(JoinPoint jionpoint, AspectLogger aspectLogger, Exception e) { /* * ???. */ String targetClassName = jionpoint.getTarget().getClass().getName(); /* * ???. */ String targetMethodName = jionpoint.getSignature().getName(); /* * ??. */ String desc = aspectLogger.value(); /* * ?. */ StringBuilder aspectMessage = new StringBuilder(); aspectMessage.append("[]:(").append(desc).append("),(").append(targetClassName) .append(".").append(targetMethodName).append(")").append(",?()"); /* * . */ logger.info(aspectMessage.toString()); } /** * . * * @param jionpoint * @return * @throws Throwable */ @Around("bizPointcut() && @annotation(aspectLogger)") public Object aroundAdvice(ProceedingJoinPoint jionpoint, AspectLogger aspectLogger) throws Throwable { /* * . */ long l1 = System.currentTimeMillis(); /* * ??. */ String desc = aspectLogger.value(); /* * ??. */ //boolean discover = aspectLogger.discover(); /* * ???. */ String targetMethodName = jionpoint.getSignature().getName(); /* * ???. */ String targetClassName = jionpoint.getTarget().getClass().getName(); /* * ?. */ Object o = jionpoint.proceed(); /* * ?. */ long l2 = System.currentTimeMillis(); /* * ?. */ StringBuilder aspectMessage = new StringBuilder(); aspectMessage.append("[]:(").append(desc).append("),(").append(targetClassName) .append(".").append(targetMethodName).append("),(").append((l2 - l1)).append("ms)") .append(",?()"); /* * . */ logger.info(aspectMessage.toString()); return o; } }