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
相关推荐
短剑重铸之日17 小时前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
知我Deja_Vu17 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
wefly201718 小时前
m3u8live.cn 在线M3U8播放器,免安装高效验流排错
前端·后端·python·音视频·前端开发工具
daidaidaiyu19 小时前
Spring IOC 源码学习 事务相关的 BeanDefinition 解析过程 (XML)
java·spring
zhanggongzichu19 小时前
小白怎么理解后端分层概念
后端·全栈
鬼蛟19 小时前
Spring————事务
android·java·spring
西门吹-禅20 小时前
【sap fiori cds up error】
java·服务器·sap cap cds
stark张宇20 小时前
Golang后端面试复盘:从Swoole到IM架构,如何支撑360w用户的实时消息推送?
后端
小码哥_常20 小时前
从0到1:搭建Spring Boot 3企业级认证授权平台
后端
敲代码的嘎仔20 小时前
Java后端面试——SSM框架面试题
java·面试·职场和发展·mybatis·ssm·springboot·八股