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也决定执行顺序

  • 相关阅读:
    推荐一个简洁优雅的博客系统,farbox
    flash从数据流判断图片格式防止xss攻击
    iBatis框架batch处理优化 (转)
    hadoop环境中误删除tmp文件夹的恢复
    Mysql04
    MapReduce中文翻译
    Big Table中文翻译
    GFS中文翻译
    HDFS读写流程
    两个网卡的设置
  • 原文地址:https://www.cnblogs.com/kikochz/p/12844815.html
Copyright © 2011-2022 走看看