packagecom.junge.demo.spring.advice;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.After;importorg.aspectj.lang.annotation.AfterReturning;importorg.aspectj.lang.annotation.AfterThrowing;importorg.aspectj.lang.annotation.Around;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Before;importorg.aspectj.lang.annotation.Pointcut;importorg.springframework.stereotype.Component;importcom.alibaba.fastjson.JSONObject;
@Component("myLog")
@Aspectpublic classMyLogImpl {
@Pointcut("execution(* com.junge.demo.spring.dao..*(..))")public voidpointcut() {
}
@Before("pointcut()")public voidbeforeFunc() {
System.out.println("beforeFunc ...");
}
@After("pointcut()")public voidafterFunc() {
System.out.println("afterFunc ...");
}
@AfterReturning("pointcut()")public voidreturnFunc() {
System.out.println("returnFunc ...");
}
@AfterThrowing(pointcut="pointcut()", throwing="e")public voidthrowExpFunc(Exception e) {
System.out.println("throwExpFunc ...");
System.out.println(e.getMessage());
}
@Around("pointcut()")public voidaroundFunc(ProceedingJoinPoint point) {
System.out.println("arount before invoke ...");if (null != point.getArgs() && point.getArgs().length > 0) {for(Object arg : point.getArgs()) {
System.out.println("around args:" +JSONObject.toJSON(arg));
}
}
System.out.println(point.getTarget());
System.out.println(point.getThis());
System.out.println(point.getKind());
System.err.println(point.getClass());
System.out.println(point.getSignature());try{
Object result=point.proceed();
System.out.println("around result:" +JSONObject.toJSONString(result));
System.out.println("around after return ...");
}catch(Throwable e) {
System.out.println("around after throws ...");
}
System.out.println("around after ...");
}
}