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
相关推荐
步行cgn3 分钟前
Spring 启动报错:BeanFactory not initialized 的原因与解决
java·python·spring
步行cgn12 分钟前
Spring 报错:No bean class specified on bean definition 的原因与解决
java·后端·spring
凤山老林18 分钟前
Spring Boot 整合 Flowable 的企业级落地指南
数据库·spring boot·后端·flowable·工作流
苏三说技术21 分钟前
Kafka已正式接入AI
后端
企业数字化笔记22 分钟前
AI写的系统出现504怎么办?接口超时和数据库慢查询排查
数据库·后端
IT_陈寒27 分钟前
Redis的Set操作居然能把我的服务整挂了?
前端·人工智能·后端
momo061171 小时前
Redis新手入门 -- 学习笔记
redis·后端
zhangjw341 小时前
第47篇:Java综合实战:电商秒杀系统(高并发场景)
java·开发语言
井云AI1 小时前
vendor 资源包是什么:井云 DSH 客户端打包为什么离不开它
后端·智能体小程序
土司大王1 小时前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树