美文网首页
自定义注解:ResultAble和ResultInfoAop

自定义注解:ResultAble和ResultInfoAop

作者: 大师艾小伦 | 来源:发表于2022-08-04 10:39 被阅读0次

    功能

    ResultAble 注解的方法返回的对象需要是一个Result对象。
    加上这个注解后,方法当出现异常的时候,会由ResultInfoAop进行处理,ResultInfoAop会将抛出的异常捕获,并会将异常封装成Result对象,返回给调用者

    注解定义

    @Target({ElementType.TYPE, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface ResultAble {
    }
    

    注解处理

    /**
     * 处理ResultAble 切面
     */
    @Aspect
    @Component
    public class ResultInfoAop {
    
        private final Logger log = LoggerFactory.getLogger(this.getClass());
    
        /**
         * 切面位置是{@link com.smartj.web.common.result.annotation.ResultAble} 标注的方法
         */
        @Pointcut("@annotation(com.smartj.web.common.result.annotation.ResultAble)")
        public void pointcut() {
        }
    
    
        /**
         * 处理切面<P>
         * 如果没有异常则正常返回,如果有异常则将异常包装成Result
         *
         * @param point 连接点
         * @return Result对象
         * @throws Throwable 异常
         */
        @Around("pointcut()")
        public Object around(ProceedingJoinPoint point) throws Throwable {
            Object proceed;
            try {
                proceed = point.proceed();
            } catch (Exception e) {
                log.error(point.getSignature().getName() + ":", e);
                proceed = ResultUtil.error(e);
            }
            return proceed;
        }
    }
    

    相关文章

      网友评论

          本文标题:自定义注解:ResultAble和ResultInfoAop

          本文链接:https://www.haomeiwen.com/subject/ymbywrtx.html