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

    科技2025-05-03  10

    文章目录

    一、@AutoConfigureBefore二、@AutoConfigureAfter三、@AutoConfigureOrder四、AutoConfigurationSorter


    一、@AutoConfigureBefore

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


    二、@AutoConfigureAfter

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


    三、@AutoConfigureOrder

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


    四、AutoConfigurationSorter

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

    下面重点看下getInPriorityOrder(…)方法。

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


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

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

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


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

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

    排序的过程。

    排序的核心算法。

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

    获取value、name属性的值。

    Processed: 0.011, SQL: 8