本文共 2725 字,大约阅读时间需要 9 分钟。
问题的背景:public class ServiceResult{ private T result; /** * 错误返回code */ private int retCode; public int getRetCode() { return retCode; } public void setRetCode(int retCode) { this.retCode = retCode; } public T getResult() { return result; } public void setResult(T result) { this.result = result; }}
public class ServiceParam{ private T param; public T getParam() { return param; } public void setParam(T param) { this.param = param; }}
@Aspect@Component@Order(0) public class ExceptionAspect { /** * 配置切入点,该方法无方法体,主要为方便同类中其他方法使用此处配置的切入点 */ @Pointcut("execution(* cn.xx.dubbo.security.service..*(..))") public void aspect() { } @Around("aspect()") public ServiceResult around(JoinPoint joinPoint) { System.out.println("===============START"); ServiceResult result; try { //调用拦截的方法主体 result = (ServiceResult) ((ProceedingJoinPoint) joinPoint).proceed(); } catch (Throwable e) { System.out.println("出现了异常:" + e.getMessage()); result = new ServiceResult(); result.setResult("exception:" + e.getMessage()); result.setRetCode(-1); } System.out.println("===============END"); return result; }}
@Override @Transactional public ServiceResult addProduct(ServiceParamparam) throws Exception { Product product = param.getParam(); int rlt = biz.addProduct(product); if(rlt == 0) throw new Exception("操作失败!"); else { ServiceResult result = new ServiceResult(); result.setResult(rlt); return result; } }
转载地址:http://qjpqi.baihongyu.com/