From acab6490cbf3c0d52c6b8dfed7c478af69352b5e Mon Sep 17 00:00:00 2001 From: 沈斌 <bluelazysb@hotmail.com> Date: Wed, 20 Dec 2017 11:51:43 +0800 Subject: [PATCH] updated --- src/main/java/com/moral/common/aop/ControllerAOP.java | 56 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/moral/common/aop/ControllerAOP.java b/src/main/java/com/moral/common/aop/ControllerAOP.java index bd542c7..8c90a0b 100644 --- a/src/main/java/com/moral/common/aop/ControllerAOP.java +++ b/src/main/java/com/moral/common/aop/ControllerAOP.java @@ -1,14 +1,22 @@ package com.moral.common.aop; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; +import com.moral.common.bean.AppData; +import com.moral.common.bean.ResultBean; import com.moral.common.exception.BusinessException; +import com.moral.common.exception.ValidateException; import lombok.extern.log4j.Log4j; @@ -16,13 +24,15 @@ @Aspect @Component public class ControllerAOP { - + @Around("execution(* com.moral.controller.*Controller.*(..))") - public Object handlerControllerMethod(ProceedingJoinPoint pjp) { + public Object handlerControllerMethod(ProceedingJoinPoint pjp) throws Exception { + long startTime = System.currentTimeMillis(); - Map<String, Object> result; + Object result; + try { - result = (Map<String, Object>) pjp.proceed(); + result = pjp.proceed(); log.info(pjp.getSignature() + "use time:" + (System.currentTimeMillis() - startTime)); } catch (Throwable e) { result = handlerException(pjp, e); @@ -31,18 +41,40 @@ return result; } - private Map<String, Object> handlerException(ProceedingJoinPoint pjp, Throwable e) { - Map<String, Object> result = new HashMap<String, Object>(); - - // ������������ + @SuppressWarnings("rawtypes") + private Object handlerException(ProceedingJoinPoint pjp, Throwable e) throws Exception { + Signature sig = pjp.getSignature(); + MethodSignature msig = null; + if (!(sig instanceof MethodSignature)) { + throw new IllegalArgumentException("���������������������������"); + } + msig = (MethodSignature) sig; + Object target = pjp.getTarget(); + Method currentMethod = target.getClass().getMethod(msig.getName(), msig.getParameterTypes()); + Type type = currentMethod.getGenericReturnType(); + String message = ""; if (e instanceof BusinessException) { - result.put("msg", e.getLocalizedMessage()); + message = e.getLocalizedMessage(); + } else if (e instanceof ValidateException) { + message = e.getLocalizedMessage(); } else { log.error(pjp.getSignature() + " error ", e); - result.put("msg", e.toString()); - //TODO ������������������������������������������������������������������ + message = e.toString(); } - return result; + if (type instanceof ParameterizedType) { + Type rawType = ((ParameterizedType) type).getRawType(); + if (rawType == AppData.class) { + return new AppData(message,AppData.FAIL); + } else if (rawType == ResultBean.class) { + return new ResultBean(message,ResultBean.FAIL); + } else if (rawType == Map.class) { + Map<String, Object> resultMap = new HashMap<String, Object>(); + resultMap.put("msg", message); + return resultMap; + } + } + return null; + } } -- Gitblit v1.8.0