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
相关推荐
范闲7 小时前
第二章:Octo v0.1.1:从「能用」到「好用」——终端 AI 聊天体验的全面升级
人工智能·后端
贰先生7 小时前
Xiuno BBS 审计之问题03:附件上传高危风险
后端
Ai拆代码的曹操7 小时前
记一次 K8s Pod Pending 排查:两层坑叠加,从资源到存储的完整复盘
后端
贰先生7 小时前
Xiuno BBS 审计之问题04:Cookie 缺少 HttpOnly/Secure/SameSite 安全属性
后端
贰先生7 小时前
Xiuno BBS 审计之问题06:硬编码 auth_key 加密密钥
后端
贰先生7 小时前
Xiuno BBS 审计之问题02:后台用户搜索可能造成严重性能 DoS
后端
折哥的程序人生 · 物流技术专研7 小时前
Java 23 种设计模式:从踩坑到精通 | 备忘录模式 —— 快照与撤销,给对象装一个“后悔药”
java·设计模式·备忘录模式·行为型模式·java设计模式·从踩坑到精通·撤销重做
范闲7 小时前
第一章:从零构建终端 AI 助手 —— Octo 项目实战
后端·llm
Gopher_HBo7 小时前
docker-run-调用链全图解
后端
贰先生7 小时前
Xiuno BBS 审计之问题09:登录回跳 referer 未严格校验,存在开放重定向风险
后端