SpringBoot核心注解

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

  • 18
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值