SpringBoot核心注解

用过springboot的人都知道。它的核心注解@SpringBootApplication以及run方法。那springboot为什么不需要配置xml。可以说是零配置。
首先我们来看看主启动类:
SpringBoot核心注解_第1张图片
我们进入@SpringBootApplication:。
SpringBoot核心注解_第2张图片
这里我们重点看@SpringBootConfiguration ,@EnableAutoConfiguration,@ComponentScan。springboot官方文档,也对这三个注解,进行了详细的说明。官方文档
我们先来看看 @SpringBootConfiguration这个注解
SpringBoot核心注解_第3张图片
我们可以看到除了,原来的那些注解外。就多了一个@configuration注解。用过的都知道@configuration的作用是什么。它是让我们能够去注册一些额外的Bean,并且导入一些额外的配置。@Configuration还有一个作用就是把该类变成一个配置类,不需要额外的XML进行配置。所以@SpringBootConfiguration就相当于@Configuration。说白了,以前的xml配置。在springboot中我们用打上@configuration这个注解的类来代替。
我们在看@EnableAutoConfiguration:
SpringBoot核心注解_第4张图片
可以看到,除原来的注解外。多个两个:
@AutoConfigurationPackage,@Import(AutoConfigurationImportSelector.class)
先来说一下这两个注解的作用。
@AutoConfigurationPackage:让包中的类以及子包中的类能够被自动扫描到spring容器中。
@Import(AutoConfigurationImportSelector.class):这个是自动配置的核心,我们说自动配置,那他到底帮我们配置了什么,怎么配置的?我们就来看看这个注解:
SpringBoot核心注解_第5张图片
这里可以看到它实现了好多接口。在之前版版本,AutoConfigurationImportSelector这个类叫EnableAutoConfigurationImportSelector。之前我们进去看,他是继承了 AutoConfigurationImportSelector,这个类。但是2.1.1以上版本。就直接是AutoConfigurationImportSelector而不是EnableAutoConfigurationImportSelector。
我们重点看一里面的一个方法:内容较多
方法名是 selectImports
SpringBoot核心注解_第6张图片
这个类会帮你扫描那些类自动去添加到程序当中。我们可以看到getCandidateConfigurations()这个方法,他的作用就是引入系统已经加载好的一些类,到底是那些类呢,我们点进去看一下SpringBoot核心注解_第7张图片
这个类回去寻找的一个目录为META-INF/spring.factories,也就是说他帮你加载让你去使用也就是在这个META-INF/spring.factories目录装配的:

我们点进spring.factories来看:

我们可以发现帮我们配置了很多类的全路径,我随便标记了一个。
@EnableAutoConfiguration主要作用就是让你自动去配置,但并不是所有都是创建好的,是根据你程序去进行决定。
我在来看最后这个注解:@ComponentScan
这个注解大家应该都不陌生,扫描包,放入spring容器,那他在springboot当中作用就仅是扫描包那么简单吗?,这个注解要结合SpringBootConfiguration去使用,能选择性的加载需要的类。而不是全部加载。因为内存是有限的。相当于做了一些优化。
总的来说。@SpringbootApplication 他已经把很多东西准备好,具体是否使用取决于我们的程序或者说配置。
就分享到这里。

作者:李陆喜
来源:CSDN
原文:https://blog.csdn.net/weixin_43783718/article/details/90345369
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(SpringBoot核心注解)