用过springboot的人都知道。它的核心注解@SpringBootApplication以及run方法。那springboot为什么不需要配置xml。可以说是零配置。
首先我们来看看主启动类:

我们进入@SpringBootApplication:。

这里我们重点看@SpringBootConfiguration ,@EnableAutoConfiguration,@ComponentScan。springboot官方文档,也对这三个注解,进行了详细的说明。官方文档
我们先来看看 @SpringBootConfiguration这个注解

我们可以看到除了,原来的那些注解外。就多了一个@configuration注解。用过的都知道@configuration的作用是什么。它是让我们能够去注册一些额外的Bean,并且导入一些额外的配置。@Configuration还有一个作用就是把该类变成一个配置类,不需要额外的XML进行配置。所以@SpringBootConfiguration就相当于@Configuration。说白了,以前的xml配置。在springboot中我们用打上@configuration这个注解的类来代替。
我们在看@EnableAutoConfiguration:

可以看到,除原来的注解外。多个两个:
@AutoConfigurationPackage,@Import(AutoConfigurationImportSelector.class)
先来说一下这两个注解的作用。
@AutoConfigurationPackage:让包中的类以及子包中的类能够被自动扫描到spring容器中。
@Import(AutoConfigurationImportSelector.class):这个是自动配置的核心,我们说自动配置,那他到底帮我们配置了什么,怎么配置的?我们就来看看这个注解:

这里可以看到它实现了好多接口。在之前版版本,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
版权声明:本文为博主原创文章,转载请附上博文链接!

SpringBoot核心注解相关推荐

  1. SpringBoot核心注解介绍

    我们看一下SpringBoot核心注解的一个介绍,其实我们之前在SpringBoot当中呢,我们用过这些注解了,只是我们没有去说一下每个注解的详细含义,那么我们在这里把它补齐,我们打开我们的代码,我们 ...

  2. SpringBoot核心注解@SpringBootApplication一二

    SpringBoot核心注解@SpringBootApplication,用于SpringBoot项目的启动类上,在 2.2.0.RELEASE 版本中是4个注解的组合,即 @SpringBootCo ...

  3. 深入SpringBoot核心注解原理

    源码分享:Javaweb练手项目下载 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配 ...

  4. 一文带你看懂Springboot核心功能及优缺点

    点击上方[视学算法]→右上角[...]→[设为星标⭐] SpringBoot核心功能 1.独立运行Spring项目 Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项 ...

  5. SpringBoot核心

    1.基本配置 1.1入口类和@SrpingBootApplication SpringBoot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的 ...

  6. SpringBoot原理-SpringBoot核心运行原理

    导语   Spring Boot最为核心的功能就是自动配置,所有功能的实现都是基于"约定优于配置"的原则,但是Spring Boot是如何实现自动配置的功能的,下面就通过源码学习S ...

  7. SpringBoot2.1.5 (4)---SpringBoot 常用注解说明

    SpringBoot2.1.5 (4)---SpringBoot 常用注解说明 @SpringBootApplication Spring Boot的项目一般都会有*Application的入口类,入 ...

  8. SpringBoot核心原理:自动配置、事件驱动、Condition

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/l6108003/article/ details/106966386 前言 SpringBoot是Spring的包装,通过自动 ...

  9. 【springboot】手写SpringBoot核心流程

    通过手写模拟实现一个Spring Boot,就能以非常简单的方式就能知道Spring Boot大概是如何工作的. 工程与依赖 建一个工程,两个Module: spring-boot模块:表示sprin ...

最新文章

  1. 在maven项目中使用Junit进行单元测试(一)
  2. chrome 适配调试_终于明白怎么用Chrome开发适配各种移动端屏幕尺寸了
  3. oracle分歧处理,ORACLE 过程中容错处理
  4. android Studio 配置LUA 开发环境
  5. 【HTML/CSS】单位小结
  6. 通用时区:你应该知道的数据库时区知识
  7. TensorFlow tf.squeeze
  8. FLOPs FLOPS
  9. a股历史30年的大盘价_上交所成立30周年!6张图读懂A股30年
  10. Android SDK下载和安装,以及部署
  11. 从计算机移到u盘如何加快速度,加快U盘写入速度
  12. js常用正则 验证数字正则
  13. simulink中不能改名_王者荣耀:万格改名教学,空白名、重复名、个性符号名改法!...
  14. 电脑开启移动热点手机一直显示正在获取ip
  15. 云服务器的带宽是什么意思?怎么选择带宽大小?
  16. 1.软件工程—数据流图
  17. 差距不止一星半点,Github星标85K的性能优化法则圣经
  18. .net仿google analysis第三方流量监测
  19. Kafka触发Rebalance的场景分析
  20. python的turtle画小绵羊_Python作图

热门文章

  1. git 与github配置(老师详细版)
  2. 怎样将PPT文件进行压缩?这几步很简单
  3. 定制材料 单壁碳纳米管包裹Cu原子链/碳纳米管包裹的硅纳米线复合结构/氮掺杂碳纳米管包裹钴
  4. Appweb+ESP学习笔记
  5. Python编程初学者指南——有所思
  6. 学习率和数据集规模_数据集和数据
  7. 快速完成会议记录的智慧之选,讯飞智能录音笔SR502表现出色
  8. linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
  9. 微信小程序点赞+取消点赞多项点击
  10. 转:PM产品设计九步法