springboot 自動配置


XxxxApplication.java --> @SpringBootApplication --> @EnableAutoConfiguration --> 

@Import(EnableAutoConfigurationImportSelector.class) --> AutoConfigurationImportSelector.java -->

//找到 有 META-INF/spring.factories 文件的jar包
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,
AnnotationAttributes attributes) {
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(
getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());
Assert.notEmpty(configurations,
"No auto configuration classes found in META-INF/spring.factories. If you "
+ "are using a custom packaging, make sure that file is correct.");
return configurations;
}

  --> org.springframework.boot.autoconfigure.autoConfigure.jar --> META-INF/spring.factories 


  --> 這個文件裏面所有配置的類, 可以自動配置

比如:   WebMvcAutoConfiguration  

@Bean
@ConditionalOnMissingBean(HiddenHttpMethodFilter.class)
public OrderedHiddenHttpMethodFilter hiddenHttpMethodFilter() {
   return new OrderedHiddenHttpMethodFilter();
}
@ConditionalOnMissingBean  這個條件註解起了關鍵作用, 如果不存在這個Bean 就創建這個bean
正是因爲這個自動配置, 這程序使用的時候, 不需要@Autowires 就可以直接使用




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章