2017-12-03 132 views
0

因此,我正在使用彈簧啓動進行其餘的Api調用。 我想知道spring boot如何逐步加載所有的配置。 就像加載配置時的過程一樣,順序是什麼以及如何遵循。 Spring安全性,數據庫配置和bean初始化的全部內容如何加載這些內容。 以及彈簧引導如何找到優先級(順序),它應該首先加載並且應該是下一個。彈簧靴如何工作,它如何加載所有配置

+0

'@Order(int value)'定義加載順序。最低的值,首先加載。在問這種類型的問題之前,您應該先閱讀文檔。如果您無法從文檔中理解某些內容,那麼您可以詢問哪些部分/部分不理解。 –

回答

1

Bean是基於Spring Boot中的自動配置機制加載的,在包含要加載的配置類的全限定名的jar文件的META-INF文件夾中有一個spring.factories文件。
當Spring Boot發現一個這樣的文件時,它會將配置作爲一個bean加載,配置通常會加載其他bean。

其他方式的配置可以通過簡單的@Import加載,像這樣的一些工作,例如@EnableMetrics

包含此自動配置機制的Jar文件通常稱爲啓動器。

還有一些特殊的bean也會被Spring拾取,例如FilterDefinitionBean會變成過濾器或CommandLineRunner,它們將在啓動後執行。


通常你不必太擔心首發的順序,因爲春天開機自動檢測到正確的順序對這些基礎上,依賴初始化,豆@DependsOn註解。
Spring引導啓動器autoconfiguraions在bean已經定義之後發生,因此它們可以爲您提供後備bean,但前提是您尚未定義它們。

但有時,特別是當你有@ConditionalOnBean你必須明確地定義了訂單,這可以通過@AutoConfigureBefore@AutoConfigureAfter註釋進行定義,其中該自動配置必須被初始化。

另一個註釋@AutoConfigureOrder@Order註釋的Spring Boot等價物,也可用於更改順序(因爲@Order不適用於自動配置)。

如果您檢查您最喜愛的原型的源代碼,您將看到這些訂單更改註釋通常會添加到課程中。