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注解详解的主要内容,如果未能解决你的问题,请参考以下文章

@SpringBootApplication 标注非引导类

@SpringBootApplication注解

@SpringBootApplication源码详细解析

Springboot系列:@SpringBootApplication注解

SpringBootSpringBoot 自动配置原理

使用idea引入注解@SpringBootApplication报错Cannot resolve symbol 'SpringBootApplication'