注解@Order的作用是定义Spring容器加载Bean的顺序。

源码

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Documented
public @interface Order {/*** The order value.* <p>Default is {@link Ordered#LOWEST_PRECEDENCE}.* @see Ordered#getOrder()*/int value() default Ordered.LOWEST_PRECEDENCE;}
public interface Ordered {/*** Useful constant for the highest precedence value.* @see java.lang.Integer#MIN_VALUE*/int HIGHEST_PRECEDENCE = Integer.MIN_VALUE;/*** Useful constant for the lowest precedence value.* @see java.lang.Integer#MAX_VALUE*/int LOWEST_PRECEDENCE = Integer.MAX_VALUE;/*** Get the order value of this object.* <p>Higher values are interpreted as lower priority. As a consequence,* the object with the lowest value has the highest priority (somewhat* analogous to Servlet {@code load-on-startup} values).* <p>Same order values will result in arbitrary sort positions for the* affected objects.* @return the order value* @see #HIGHEST_PRECEDENCE* @see #LOWEST_PRECEDENCE*/int getOrder();}

通过源码解读,我们可以得到以下结论:

  • 注解可以作用在类、方法、字段声明(包括枚举常量)
  • 注解有一个int类型的参数,可以不传,默认是最低优先级
  • 通过常量类的值我们可以推测参数值越小优先级越高;

案例

创建三个pojo类Cat1, Cat2, Cat3,使用@Component注解将其交给Spring容器自动加载,每个类分别加上@Order(1), @Order(2), @Order(3)注解。

@Component
@Order(1)
public class Cat1 {public Cat1() {System.out.println("Order:1");}
}@Component
@Order(2)
public class Cat2 {public Cat2() {System.out.println("Order:2");}
}@Component
@Order(3)
public class Cat3 {public Cat3() {System.out.println("Order:3");}
}

然后启动启动类观察控制台信息输出

Spring @Order注解详解相关推荐

  1. Spring Boot注解详解

    文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...

  2. 被各种注解搞晕了?那快来看看Spring Bean注解详解!

    前言 本篇博客中,我们将会讨论用于声明不同类型 Beans 的几种最常用的 Spring Bean 注解. 众所周知,Spring 容器中有许多配置 Bean 的方法,我们既可以通过 XML 配置,也 ...

  3. Spring cache 注解详解

    spring cache注解的使用: @CacheConfig 类级别的缓存注解,允许共享缓存名称 @Caching 将多种缓存操作分组 @Cacheable 触发缓存入口 @CacahePut 更新 ...

  4. Spring新注解详解

    使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下: 非自定义的Bean的配置:<bean> 加载properties文件的配置:context:property-p ...

  5. 原理探究:Spring @Value注解详解

    前 言 对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了.spring给开发者提供了非常丰富的api,今天咱们重点聊聊@Value注解,因为它是一个非常有用,但极其容易被忽视的注 ...

  6. 一篇全了解Spring全注解详解

    目录 用于创建对象 1.Component 2.Controller 3.Service 4.Repository 用于注入数据 1.Autowired 2.Qulifier 3.Resource 4 ...

  7. spring注解:spring aop注解详解

    一. AOP的基本概念 Aspect(切面):通常是一个类,里面可以定义切入点和通知 Pointcut(切点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式 JointPoint(连接点) ...

  8. Spring Cache 注解详解

    @CacheConfig:在类上面统一定义缓存的名字,方法上面就不用标注了,表示该类所有的方法都是支持缓存的,我们一般不使用该注解,直接通过@Cacheable自己配置缓存集的名字来定义. @Cach ...

  9. Spring零配置之@Configuration注解详解

    转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...

最新文章

  1. Global Average Pooling对全连接层的可替代性分析
  2. Ubuntu安装Nginx+PHP5.6+MySQL5.6
  3. 北斗导航 | RAIM:单差载波相位完好性监测(接收机自主完好性检测)
  4. Java内存管理:深入Java内存区域
  5. vue --- vue.js实战基础篇课后练习
  6. Winform VS2015打包
  7. 【linux】——linux ls命令参数及用法详解---linux显示目录内容命令
  8. java跳转html页面_springboot 2.0.8 跳转html页面
  9. 第4章 同余问题《信息学奥赛一本通 提高篇》
  10. Python操作HDF5存储数据方法总结
  11. Android 功耗(11)---如何测试 Mediatek 平台各个场景的功耗数据?
  12. 程序员打字练习_程序员必须来看的面试圣经!!
  13. 【Mac进销存管理软件】Daily Sales Pro Mac
  14. OPPO R9s刷机教程 可解锁线刷包 救砖升级
  15. Latex同时添加中英文摘要
  16. python 爬虫 美女_使用Python爬虫爬取网络美女图片
  17. Chrome键盘快捷键
  18. mov格式如何转换成mp4?详细步骤教程
  19. 2019字节跳动实习面试
  20. 基于python的音乐数据分析_基于Python的亚马逊音乐产品评论分析

热门文章

  1. Python黑帽子--黑客与渗透测试编程之道 python3 实现代码
  2. 《Spring实战》读书笔记-第3章 高级装配,zookeeper原理图
  3. 软件设计师---操作系统
  4. 滚动轴承故障诊断MATLAB程序:快速谱峭度、谱峭度+包络谱分析
  5. 分析型项目的模型管理建议(建议收藏)
  6. 【基于ChatGPT的API】实现一个响应速度比官方更快的在线问答网站并通过宝塔上线全网可访问
  7. 计算机文化基础(高职高专版 第十一版)第八章答案
  8. H3C交换机设置telnet登录配置
  9. 如何利用JS加密工具来压缩体积
  10. 极品鸿蒙系统 心月文谛,第二十章:天玄道河