所以我正在使用spring boot进行其余的Api调用。 我想知道spring boot如何逐步加载所有配置。 就像加载配置时的过程一样,订单的遵循方式和方式。 Spring的安全性,数据库配置和bean初始化如何加载它们。 以及spring引导如何找到优先级(order),应该首先加载,然后应该是下一个。
答案 0 :(得分:1)
根据Spring Boot中的自动配置机制加载Bean,jar文件的spring.factories
文件夹中有一个META-INF
文件,其中包含要加载的Configuration类的完全限定名称。登记/>
当Spring Boot找到这样的文件时,它会将配置加载为bean,配置通常会加载其他bean。
其他方式可以加载配置,只需简单@Import
,有些工作就像那样,例如@EnableMetrics
。
包含此自动配置机制的Jar文件通常称为启动器。
有一些特殊的bean也将被Spring接收,例如FilterDefinitionBean将被转换为过滤器,或CommandLineRunner,它将在启动后执行。
通常您不必过多担心启动器的顺序,因为Spring Boot会根据依赖关系(带有@DependsOn
注释的bean)自动检测正确的初始化顺序。
Spring引导启动autoconfiguraions发生在你的bean已经定义之后,所以他们可以给你回退bean,但前提是你没有定义它们。
但有时候,尤其是当您有@ConditionalOnBean
时必须明确定义顺序时,可以通过@AutoConfigureBefore
和@AutoConfigureAfter
注释来定义此自动配置必须初始化的位置。
另一个注释@AutoConfigureOrder
是@Order
注释的Spring Boot等价物也可用于更改顺序(因为@Order不适用于自动配置)。
如果您检查自己喜欢的入门级源代码,您会看到这些订单更改注释通常会添加到课程中。