簡體   English   中英

@EnableAutoConfiguration 實際上是“自動配置”的嗎?

[英]What @EnableAutoConfiguration actually "auto-configured"?

我正在閱讀Spring 引導文章中的 @ComponentScan 和 @EnableAutoConfiguration 之間的區別 看到這個:

它會根據類路徑中包含的 jar 文件和我們定義的 bean 自動創建和注冊beans

當我們在類路徑中定義spring-boot-starter-web依賴項時,Spring 引導自動配置TomcatSpring MVC

我可以理解它基於包含的 jar 文件創建和注冊beans 但我無法弄清楚配置了哪些確切的東西 這是否意味着它將自動執行一些bean? 或者是其他東西? 有沒有其他例子解釋這個?

@EnableAutoConfiguration開啟自動配置。 自動配置嘗試定位 spring bean,應根據在類路徑中找到的依賴項為您的應用程序配置這些 bean。 Spring 搜索META-INF/spring.factories文件。 啟用自動配置時,該屬性指向的 class 被加載。

考慮下面來自 spring 源代碼的代碼片段:

@AutoConfiguration(
after = {DataSourceAutoConfiguration.class}
) 
@ConditionalOnClass({DataSource.class, JdbcTemplate.class})
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties({JdbcProperties.class})
@Import({DatabaseInitializationDependencyConfigurer.class, 
         JdbcTemplateConfiguration.class, 
         NamedParameterJdbcTemplateConfiguration.class})
public class JdbcTemplateAutoConfiguration {
  public JdbcTemplateAutoConfiguration() {
  }
}

@ComponentScan ,@ComponentScan 搜索標有原型注釋( @Component 、@ @Controller@Service Service、@ @Repository )的應用程序代碼的 bean

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM