大体流程
不同的bean实现的接口不同、它的作用也不不同、那么他的加载顺序也不同
具体可参考beanFactory对不同类型的bean加载的顺序
如果bean的类型相同、实现的接口也相同则根据
- 实现
org.springframework.core.PriorityOrdered
接口 - 实现
org.springframework.core.Ordered
接口 - 注解
@Order
- 注解
@Priority
以上优先级从高到低
接口优先级比注解的高
如果都是接口PriorityOrdered优先级更高
如果都是注解@Order优先级更高
数值越小的优先级就越高
代码流程
具体可参考org.springframework.core.OrderComparator
默认的排序(不支持注解)
具体可参考org.springframework.core.annotation.AnnotationAwareOrderComparator
支持注解的排序
具体可参考org.springframework.core.annotation.OrderUtils
获取注解
spring 中对bean的排序用的是org.springframework.core.annotation.AnnotationAwareOrderComparator#INSTANCE
spring初始化context时会把排序的类注册到beanFactory中
1 | if (!(beanFactory.getDependencyComparator() instanceof AnnotationAwareOrderComparator)) { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 title!
评论