Spring @Primary、@Order、JSR @Priority作用与区别

前言

@Primary、@Order、@Priority三个注解很常见,关于它们的异同,这里做个总结。

@Primary、@Order、@Priority

  • @Primary
    • Spring @Primary控制注入优先级。
  • @Order
    • Spring @Order控制注入到List中的排序,值越小优先级越高,不能是负数,负数预留用作特殊含义比如未指定。
  • @Priority
    • JSR @Priority既能控制List中的排序又能控制注入优先级;值越小优先级越高,不能是负数,负数预留用作特殊含义比如未指定;如果一个类实现了Order接口且既有@Priority又有@Order,优先级:Order接口>@Order>@Priority;
      当注入bean有多个候选者,有的候选者用@Priority,有的用@Primary,优先级:@Primary>@Priority;

总结

  • 有控制注入优先级的,有控制注入后的顺序的,还有两者兼有的;
  • spring的注解优先级高于JSR注解;接口高于注解;

参考源码

实现原理,可参考以下几个类。

  • org.springframework.core.annotation.OrderUtils#getOrder(java.lang.Class<?>)
  • org.springframework.beans.factory.support.DefaultListableBeanFactory#determineAutowireCandidate
相关推荐
我真的是大笨蛋1 小时前
K8S-Pod(下)
java·笔记·云原生·容器·kubernetes
碳水加碳水2 小时前
Java代码审计实战:XML外部实体注入(XXE)深度解析
java·安全·web安全·代码审计
努力也学不会java3 小时前
【设计模式】 原型模式
java·设计模式·原型模式
方渐鸿3 小时前
【2024】k8s集群 图文详细 部署安装使用(两万字)
java·运维·容器·kubernetes·k8s·运维开发·持续部署
学亮编程手记3 小时前
K8S v1.33 版本主要新特性介绍
java·容器·kubernetes
Haven-4 小时前
Java-面试八股文-JVM篇
java·jvm·面试
我真的是大笨蛋5 小时前
JVM调优总结
java·jvm·数据库·redis·缓存·性能优化·系统架构
wjs0405 小时前
Git常用的命令
java·git·gitlab
superlls5 小时前
(算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
java·数据结构·算法
田里的水稻6 小时前
C++_队列编码实例,从末端添加对象,同时把头部的对象剔除掉,中的队列长度为设置长度NUM_OBJ
java·c++·算法