zoukankan      html  css  js  c++  java
  • @Order

    @Order

    @Order用于指定Bean的执行顺序(也会影响加载顺序), 数字越小优先级越高, 默认Ordered.LOWEST_PRECEDENCE

    假设有两全局异常处理类处理相同的错误, 谁的优先级高会先调用谁

    handler1

    @Slf4j
    @Order(Ordered.HIGHEST_PRECEDENCE)
    //@Order(Ordered.LOWEST_PRECEDENCE)
    @RestControllerAdvice
    public class Handler1 {
        public Handler1() throws InterruptedException {
            TimeUnit.SECONDS.sleep(2);
            System.out.println("handler1 注入 ioc ....");
        }
        @ExceptionHandler(NullPointerException.class)
        private String catche(){
            log.warn("handler1 调用");
            return "handler1";
        }
    }
    

    handler2

    @Slf4j
    @Order(Ordered.LOWEST_PRECEDENCE)
    //@Order(Ordered.HIGHEST_PRECEDENCE)
    @RestControllerAdvice
    public class Handler2 {
        public Handler2() {
            System.out.println("handler2 注入 ioc ....");
        }
    
        @ExceptionHandler(NullPointerException.class)
        private String catche(){
            log.warn("handler2 调用");
            return "handler2";
        }
    }
    

    controller

    @RestController
    public class Controller {
        @GetMapping("/get")
        @ResponseBody
        public void get() {
            throw new NullPointerException();
        }
    }
    
    

    先让Handler1 注入时休眠2s, 此时Handler1@Order(Ordered.HIGHEST_PRECEDENCE) 是最高等级

    运行发现

    说明@order决定pojo注入的ioc的先后顺序

    我们发送请求看一看

    然后我们交换优先级, 发送get请求

    从结果可以明显看出优先级高的异常处理器被调用了

    说明@order也决定执行顺序

  • 相关阅读:
    BZOJ 3506 机械排序臂 splay
    BZOJ 2843 LCT
    BZOJ 3669 魔法森林
    BZOJ 2049 LCT
    BZOJ 3223 文艺平衡树 splay
    BZOJ 1433 假期的宿舍 二分图匹配
    BZOJ 1051 受欢迎的牛 强连通块
    BZOJ 1503 郁闷的出纳员 treap
    BZOJ 1096 ZJOI2007 仓库设计 斜率优化dp
    BZOJ 1396: 识别子串( 后缀数组 + 线段树 )
  • 原文地址:https://www.cnblogs.com/kikochz/p/12844815.html
Copyright © 2011-2022 走看看