自定义注解:ResultAble和ResultInfoAop

功能

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() {
    }


    /**
     * 处理切面

* 如果没有异常则正常返回,如果有异常则将异常包装成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)