spring boots如何工作,如何加载所有配置

spring boots如何工作,如何加载所有配置,spring,rest,spring-boot,restful-architecture,Spring,Rest,Spring Boot,Restful Architecture,因此,我使用SpringBoot调用RESTAPI。 我想知道SpringBoot是如何一步一步地加载所有配置的。 就像加载配置时的流程一样,顺序是什么以及如何遵循。Spring安全性、db配置和bean初始化,这些都是如何加载的。 以及spring boot如何找到优先级(顺序),应该先加载哪个,然后加载哪个。bean是基于spring boot中的自动配置机制加载的,jar文件的META-INF文件夹中有一个spring.factories文件,包含要加载的配置类的完全限定名。 当sprin

因此,我使用SpringBoot调用RESTAPI。 我想知道SpringBoot是如何一步一步地加载所有配置的。 就像加载配置时的流程一样,顺序是什么以及如何遵循。Spring安全性、db配置和bean初始化,这些都是如何加载的。
以及spring boot如何找到优先级(顺序),应该先加载哪个,然后加载哪个。

bean是基于spring boot中的自动配置机制加载的,jar文件的
META-INF
文件夹中有一个
spring.factories
文件,包含要加载的配置类的完全限定名。
当springboot找到这样的文件时,它将作为bean加载配置,而配置通常加载其他bean

通过另一种方式可以加载配置,只需导入它们,有些工作就是这样的,例如
@EnableMetrics

包含这种自动配置机制的Jar文件通常称为启动器

还有一些特殊的bean将由Spring获取,例如FilterDefinitionBean,它将被转换为过滤器,或者CommandLineRunner,在启动后执行


通常,您不需要太担心启动器的顺序,因为Spring Boot会根据依赖项自动检测初始化它们的正确顺序,bean带有
@DependsOn
注释。
SpringBootStarter自动配置发生在您的bean已经定义之后,因此它们可以为您提供备用bean,但前提是您尚未定义它们

但有时,特别是当您有
@ConditionalOnBean
时,您必须显式定义顺序,这可以通过
@AutoConfigureBefore
@AutoConfigureAfter
注释来定义必须初始化此自动配置的位置

另一个注释
@AutoConfigureOrder
是与
@Order
注释相当的Spring Boot,也可用于更改顺序(因为@Order不适用于自动配置)

如果查看您最喜欢的初学者的源代码,您将看到这些更改顺序的注释经常添加到类中。

@order(int-value)
定义加载顺序。最低值为值,首先加载。在提出此类问题之前,您应该先阅读文档。如果您无法从文档中理解某些内容,那么您可以询问您不理解的部分。