当前位置: 首页 > news >正文

Spring Boot自动配置原理、实战、手撕自动装配源码

Spring Boot自动配置原理

相比较于传统的 Spring 应用,搭建一个 SpringBoot 应用,我们只需要引入一个注解 @SpringBootApplication,就可以成功运行。

前面四个不用说,是定义一个注解所必须的,关键就在于后面三个注解:

当然如果你想了解前面四个注解,可以查看我的文章:

@Target、@Retention、@Documented、@Inherited注解的超详细分析

@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。也就是说我们如果不用 @SpringBootApplication 这个复合注解,而是直接使用最下面这三个注解,也能启动一个 SpringBoot 应用。

前面四个不用说,是定义一个注解所必须的,关键就在于后面三个注解:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。也就是说我们如果不用 @SpringBootApplication 这个复合注解,而是直接使用最下面这三个注解,也能启动一个 SpringBoot 应用,其中,Spring Boot的自动配置注解是@EnableAutoConfiguration。

其中,Spring Boot的自动配置最最核心的注解是@EnableAutoConfiguration,

@SpringBootConfiguration 注解


这个注解我们点进去就可以发现,它实际上就是一个 @Configuration 注解,这个注解大家应该很熟悉了,加上这个注解就是为了让当前类作为一个配置类交由 Spring 的 IOC 容器进行管理,因为前面我们说了,SpringBoot 本质上还是 Spring,所以原属于 Spring 的注解 @Configuration 在 SpringBoot 中也可以直接应用。

@ComponentScan 注解


@ComponentScan这个注解也很熟悉,用于定义 Spring 的扫描路径,等价于在 xml 文件中配置 context:component-scan,假如不配置扫描路径,那么 Spring 就会默认扫描当前类所在的包及其子包中的所有标注了 @Component,@Service,@Controller 等注解的类。

通过查看源码可以知道,@ComponentScan使用了@Repeatable(ComponentScans.class)注解,@ComponentScans是聚合多个ComponentScan注解的容器注解,它使ComponentScan注解可以在同一个类或方法上多次使用,@Repeatable注解的例子如下:

@EnableAutoConfiguration注解

这个注解才是实现自动装配的关键,点进去之后发现,它是一个由 @AutoConfigurationPackage 和 @Import 注解组成的复合注解

@Import的类可以找到下面自动加载自动配置的映射。

写了一半用空补补

http://www.lryc.cn/news/226476.html

相关文章:

  • 111111111111111
  • React动态生成二维码和毫米(mm)单位转像素(px)单位
  • SpringMvc 常见面试题
  • jmeter接口自动化测试工具在企业开展实际的操作
  • 第17章 反射机制
  • 如何在在线Excel文档中对数据进行统计
  • redis配置文件详解
  • 前端设计模式之【工厂模式】
  • Python与ArcGIS系列(一)ArcGIS中使用Python
  • LeetCode(2)移除元素【数组/字符串】【简单】
  • 原型模式(创建型)
  • Linux命令(118)之paste
  • 使用零拷贝技术实现消息转发功能
  • 【编程语言发展史】SQL的发展历史
  • 2023NOIP A层联测28-小猫吃火龙果
  • C# Dictionary与List的用法区别与联系
  • Git应用(1)
  • 【Java】Netty创建网络服务端客户端(TCP/UDP)
  • Android 设计模式--单例模式
  • 语音识别与自然语言处理(NLP):技术前沿与未来趋势
  • k8s-docker二进制(1.28)的搭建
  • 【代码随想录】算法训练计划18
  • Leetcode刷题详解—— 组合总和
  • Echarts柱状体实现滚动条动态滚动
  • SplayTree高分测试用例
  • 制作麒麟V10-server-sp2镜像
  • 2.docker镜像的导入导出
  • bs4介绍和遍历文档树、搜索文档树、案例:爬美女图片、 bs4其它用法、css选择器
  • 微服务-开篇-个人对微服务的理解
  • 机器学习算法-集成学习