一、@AutoConfigureBefore

Spring Boot架构篇 - 自动装配的顺序性

表示该自动配置类在其他指定的自动配置类之前应用。
与标准的@Configuration配置类相同。


二、@AutoConfigureAfter

Spring Boot架构篇 - 自动装配的顺序性

表示该自动配置类在其他指定的自动配置类之后应用。
与标准的@Configuration配置类相同。


三、@AutoConfigureOrder

Spring Boot架构篇 - 自动装配的顺序性

指定自动配置类的顺序性,值越小优先级越高。
与标准的@Configuration配置类相同。


四、AutoConfigurationSorter

它是以上三个注解的底层的顺序控制的实现逻辑。

下面重点看下getInPriorityOrder(…)方法。
Spring Boot架构篇 - 自动装配的顺序性

首先按照类名的数字顺序或者字典顺序排序。
然后按照@AutoConfigureOrder指定的顺序排序。
最后按照@AutoConfigureBefore、@AutoConfigureAfter依赖的顺序排序。


接下来分析下@AutoConfigureOrder的底层实现原理。

Spring Boot架构篇 - 自动装配的顺序性

实际上是比较AutoConfigurationClass的getOrder()方法。

Spring Boot架构篇 - 自动装配的顺序性

MetadataReaderFactory -> MetadataReader -> AnnotationMetadata -> AnnotationAttributes。
获取@AutoConfigureOrder注解的value值。


接着看@AutoConfigureBefore、@AutoConfigureAfter注解的解析原理。

Spring Boot架构篇 - 自动装配的顺序性

对所有自动配置类按照注解指定的顺序排序。

Spring Boot架构篇 - 自动装配的顺序性

排序的过程。

Spring Boot架构篇 - 自动装配的顺序性

排序的核心算法。

Spring Boot架构篇 - 自动装配的顺序性

获取之前、之后的类名集合。

Spring Boot架构篇 - 自动装配的顺序性

获取value、name属性的值。

相关文章:

  • 2021-07-21
  • 2022-12-23
  • 2021-06-04
  • 2021-07-30
  • 2021-11-23
  • 2021-05-09
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-17
  • 2021-10-24
  • 2021-04-02
  • 2021-10-29
  • 2021-06-09
  • 2022-12-23
相关资源
相似解决方案