Spring Boot啟動的時候會通過@EnableAutoConfiguration注解找到META-INF/spring.factories配置檔案中的所有自動配置類,并對其進行有條件加載。
這些自動配置類都是以AutoConfiguration結尾來命名的,它實際上就是一個JavaConfig形式的Spring容器配置類。
它能通過以Properties結尾命名的類中取得在全局配置檔案中配置的屬性如:server.port,而xxxProperties類是通過@ConfigurationProperties注解與全局配置檔案中對應的屬性進行綁定的。
xxxProperties類的含義是:封裝配置檔案中相關屬性;xxxAutoConfiguration類的含義是:自動配置類,目的是給Spring容器中添加元件。
xxxAutoConfiguration 類使用 @Configuration 注解将其标記為一個 Spring 配置類,并用 @EnableConfigurationProperties 注解來綁定自定義屬性和一個或多個條件的 bean 注冊方法。
如下是一段示例代碼:
@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Configuration:該注解所标記的類在Spring中就是一個配置類,被該注解所标記的類中包含一個或者多個@Bean注解的方法,這些被@Bean注解的方法将會被Spring容器掃描并用于建構Bean的定義,初始化Spring的IOC容器。