SpringBoot 源码学习——SpringBoot 自动装配源码解析 +Spring 如何处理配置类的

一丶什么是 SpringBoot 自动装配

SpringBoot 通过 SPI 的机制,在我们程序员引入一些 starter 之后,扫描外部引用 jar 包中的 META-INF/spring.factories 文件,将文件中配置的类型信息加载到 Spring 容器,实现引入 starter 即可开启相关功能的操作,大大简化了程序员手动配置 bean,即开即用。

二丶 SpringBoot 自动装配源码解析

1.源码解析入口

SpringApplication.run(启动类.class, args)

复制代码

这是我们最常用的 Main 方法启动 SpringBoot 服务的方式,其中启动类上需要标注 @SpringBootApplication 注解,自动装配,扫描主类下所有 Bean 的奥秘就在此

2.@SpringBootApplication 注解

@SpringBootApplication 本身没有什么神奇的地方,重要的是注解上面标注了 @SpringBootConfiguration , @EnableAutoConfiguration ,和 @ComponentScan 注解

  • @SpringBootConfiguration 平平无奇,上面标注了 @Configuration 表示标注的类是一个配置类

  • @EnableAutoConfiguration

    表示开启自动配置,即我们说的 SpringBoot 自动装配、

  • @AutoConfigurationPackage 其上方标注了 @Import(AutoConfigurationPackages.Registrar.class) ,加上 @EnableAutoConfiguration 上的 @Import(AutoConfigurationImportSelector.class) . @Import 注解的作用是导入一些 bean 到 Spring 容器中,实现此功能的是 ConfigurationClassPostProcessor ,它是一个 BeanFactoryPostProcessor 会解析配置类中的 @Bean,@Import,@ComponentScan 等注解

  • @ComponentScan ,指导 Spring 容器需要扫描哪些包下的类加入到 Spring 容器

也就是说 @SpringBootApplication 相当于

3.自动配置源码学习前言

SpringBoot 并不是 Spring 的替代品,而是利用 Spring 加上 约定大于配置 的思想,方便程序员开发的框架。所以其底层还是 Spring 那一套

本篇着重研究 SpringBoot 的自动装配原理,所以一些无关的代码不会进行详细探究,后续会单独学习整理。

4.SpringApplication#run 是如何初始化 ApplicationContext 的

既然 SpringBoot 是基于 Spring 的,那么必然是无法脱离 ApplicationContext 的,接下来我们以 SpringApplication#run 为入口看看,SpringApplication 是如何初始化一个 ApplicationContext 的

4.1 SpringApplication 的初始化

我们在启动类的 main 方法中 SpringApplication.run(启动类.class, args) 其实最终调用的是

在其构造方法中:

  • 根据当前项目判断 Web 应用类型

  • 初始化 ApplicationContextInitializer

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值