Spring @Order注解详解
注解@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注解详解相关推荐
- Spring Boot注解详解
文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...
- 被各种注解搞晕了?那快来看看Spring Bean注解详解!
前言 本篇博客中,我们将会讨论用于声明不同类型 Beans 的几种最常用的 Spring Bean 注解. 众所周知,Spring 容器中有许多配置 Bean 的方法,我们既可以通过 XML 配置,也 ...
- Spring cache 注解详解
spring cache注解的使用: @CacheConfig 类级别的缓存注解,允许共享缓存名称 @Caching 将多种缓存操作分组 @Cacheable 触发缓存入口 @CacahePut 更新 ...
- Spring新注解详解
使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下: 非自定义的Bean的配置:<bean> 加载properties文件的配置:context:property-p ...
- 原理探究:Spring @Value注解详解
前 言 对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了.spring给开发者提供了非常丰富的api,今天咱们重点聊聊@Value注解,因为它是一个非常有用,但极其容易被忽视的注 ...
- 一篇全了解Spring全注解详解
目录 用于创建对象 1.Component 2.Controller 3.Service 4.Repository 用于注入数据 1.Autowired 2.Qulifier 3.Resource 4 ...
- spring注解:spring aop注解详解
一. AOP的基本概念 Aspect(切面):通常是一个类,里面可以定义切入点和通知 Pointcut(切点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式 JointPoint(连接点) ...
- Spring Cache 注解详解
@CacheConfig:在类上面统一定义缓存的名字,方法上面就不用标注了,表示该类所有的方法都是支持缓存的,我们一般不使用该注解,直接通过@Cacheable自己配置缓存集的名字来定义. @Cach ...
- Spring零配置之@Configuration注解详解
转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...
最新文章
- Global Average Pooling对全连接层的可替代性分析
- Ubuntu安装Nginx+PHP5.6+MySQL5.6
- 北斗导航 | RAIM:单差载波相位完好性监测(接收机自主完好性检测)
- Java内存管理:深入Java内存区域
- vue --- vue.js实战基础篇课后练习
- Winform VS2015打包
- 【linux】——linux ls命令参数及用法详解---linux显示目录内容命令
- java跳转html页面_springboot 2.0.8 跳转html页面
- 第4章 同余问题《信息学奥赛一本通 提高篇》
- Python操作HDF5存储数据方法总结
- Android 功耗(11)---如何测试 Mediatek 平台各个场景的功耗数据?
- 程序员打字练习_程序员必须来看的面试圣经!!
- 【Mac进销存管理软件】Daily Sales Pro Mac
- OPPO R9s刷机教程 可解锁线刷包 救砖升级
- Latex同时添加中英文摘要
- python 爬虫 美女_使用Python爬虫爬取网络美女图片
- Chrome键盘快捷键
- mov格式如何转换成mp4?详细步骤教程
- 2019字节跳动实习面试
- 基于python的音乐数据分析_基于Python的亚马逊音乐产品评论分析