2) SpringBootApplication注解详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2) SpringBootApplication注解详解相关的知识,希望对你有一定的参考价值。
参考技术A@SpringbootConfiguration注解等同于以下下三个注解:
可以看到SpringBootConfiguration 等同于使用了@Configuration
@EnableAutoConfiguration会根据classpath以及定义的Bean来帮你加载你想要的bean。
可以通过spring.autoconfigure.exclude来排除掉不想自动加载的bean。
且Auto-configuration发生在自定义的bean都被注册好了之后。
另外最好将带有@EnableAutoConfiguration的类放在root package,这样就能扫描所有子包下面的类。
auto-configuration的bean大多数都是带有@ConditionalOnClass and @ConditionalOnMissingBean 注解的bean。
这个类实现了DeferredImportSelector被import进来,内部会调用getCandidateConfigurations()来加载所有的auto-configuration beans
从下面图中能看到SpringFactoriesLoader从spring.factory里找到207个auto-configuration的beans。
AutoConfigurationImportSelector核心功能就是获取spring.factories中EnableAutoConfiguration所对应的Configuration类列表,由@EnableAutoConfiguration注解中的exclude/excludeName参数筛选一遍,再由AutoConfigurationImportFilter类所有实例筛选一遍,得到最终的用于Import的configuration和exclusion。
该函数是被谁调用的呢?在org.springframework.context.annotation.ConfigurationClassParser类中被processImports()调用,而processImports()函数被doProcessConfigurationClass()调用。
关于ConfigurationClassParser 请参考 Spring Annotation IOC
指定扫描basePackages的路径,具体可以查看@Configuration的javadoc文档。
以上是关于2) SpringBootApplication注解详解的主要内容,如果未能解决你的问题,请参考以下文章
Springboot系列:@SpringBootApplication注解
使用idea引入注解@SpringBootApplication报错Cannot resolve symbol 'SpringBootApplication'