首页 > 其他分享 >Spring---SpringBoot自动装配原理

Spring---SpringBoot自动装配原理

时间:2024-11-17 09:46:08浏览次数:3  
标签:里面 SpringBoot Spring 配置 --- 自动 注解 方法

SpringBoot自动装配原理

自动配置简单来说呢,就是将第三方的组件自动装载到IOC容器里面,不需要开发人员再去编写相关的配置,在SpringBoot应用里面呢只需要加上@SpringBootApplication注解就可以实现自动配置,SpringBootApplication它是一个复合注解,真正实现自动装配的注解是 @EnableAutoConfiguration 注解。自动装配的实现呢主要依靠三个核心的关键技术:
1)引入Starter,启动依赖组件的时候,这个组件里面必须包括@Configuration配置类,然后我需要通过Bean注解去声明需要装配到IOC容器里面的Bean对象

2)这个配置类是放在第三方的jar包里面,然后通过Spring Boot中约定大于配置的理念,去把配置类的全路径放在件META_INF/Spring.factories文件里面,SpringBoot就可以知道第三方jar包里面配置类的位置,它主要是依靠Spring里面的SpringFactorierLoader来完成的

3)SpringBoot拿到所有第三方jar包声明的配置类之后,再通过ImportSelector这样一个接口来实现对这些配置类的动态加载,从而去完成自动装配这样的一个动作。

自己总结:

起着主要作用的是@SpringBootApplication注解,它是一个复合注解,其中有一个@EnableAutoConfiguration注解,这个注解也是一个复合注解,它的作用主要是开始自动配置的原理。它里面有一个 @Import注解 ,这个注解导入了一个类AutoConfigurationImportSelector。这个类实现了ImportSelector接口,重写了里面的selectImports方法,这个方法的返回值是String数组,该方法主要用于获取所有符合条件的类的全限定类名,这些类需要被加载到 IoC 容器中。在这个类内部调用了同类的getAutoConfigurationEntry()方法,在这个方法中调用了SpringFactoriesLoader类中的loadFactoryNames()方法,在这个方法内部明确写出扫描META-INF/spring.factories文件下的所有类的全类名。在这个方法中获取到所有类的全类名之后就返回,直到返回到调用它的方法中,也就是getAutoConfigurationEntry()方法。这个方法中获取到所有类的全类名之后并不会全部加载,而是会做一次过滤,将符合条件的类通过ImportSelector接口进行动态的加载。

自己结合源码画的图:
image.png

标签:里面,SpringBoot,Spring,配置,---,自动,注解,方法
From: https://blog.csdn.net/weixin_73205368/article/details/143824831

相关文章

  • JVM---JDBC案例是否真的打破了双亲委派机制的思考
    首先先来了解一下数据库驱动的加载过程:数据库驱动加载的过程我们先来看看Java中SPI定义的一个核心类:DriverManager,该类位于rt.jar包中,是Java中用于管理不同数据库厂商实现的驱动,同时这些各厂商实现的Driver驱动类,都继承自Java的核心类java.sql.Driver,如MySQL的com.mysql.c......
  • Java---SPI机制
    何谓SPI?SPI即ServiceProviderInterface,字面意思就是:“服务提供者的接口”,我的理解是:专门提供给服务提供者或者扩展框架功能的开发者去使用的一个接口。比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用......
  • 南京邮电大学-鲁健
    一、个人简介        2021年9月就读于南京邮电大学自动化学院、人工智能学院智能科学与技术专业,主修人工智能方向的相关课程,极其擅长具身智能的相关开发,曾被誉为“原批之星”,最有希望颠覆三国杀的人之一。        志愿活动:参加2023年度自动化学院、人工智能......
  • 基于Java+Vue+MySQL的青少年信息学奥林匹克竞赛交流平台设计与实现(精选毕业设计-可设
    文章目录1.前言2.详细视频演示3.文档参考3.1论文参考3.2流程设计图3.3数据库表结构设计3.4系统测试部分4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.选题推荐毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10......
  • Java毕业设计-基于Springboot框架的电影推荐系统项目实战(附源码+论文)
    大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • 基于SSM + Vue的宠物店线上运营系统设计与实现(精选毕业设计-可设计亮点、创新点)
    文章目录1.前言2.详细视频演示3.文档参考3.1论文参考3.2流程设计图3.3数据库表结构设计3.4系统测试部分4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.选题推荐毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10......
  • Java毕业设计-基于Springboot框架的兴顺物流管理系统项目实战(附源码+论文)
    大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • 2024第四届京津冀长城杯-misc
    2024第四届京津冀长城杯-miscBrickGame就连连看或者改图标会快一点吧漏洞探踪,流量解密第一阶段192.168.30.234第二阶段bdb8e21eace81d5fd21ca445ccb35071bdb8e21eace81d5fd21ca445ccb350715a76f6751576dbe1af49328aa1d2d2bea16ef62afa3a7c616dbdb8e21eace81d5fd21ca445ccb35071......
  • wish easy-记一道re题
    wisheasy-记一道re题F5设置环境变量exportPYTHONINSPECT=111exportPYTHONUNBUFFERED=11运行一下flag{python_taken_2_far}......
  • DIDCTF-2022暑假取证学习
    DIDCTF-2022暑假取证学习1.请找出操作系统主机名WIN-49I0SNRJAMF2.请给出源磁盘的SHA256哈希值。这个软件没找到Autopsy这个软件计算时间太长了,就...3.请找出操作系统中安装的Android模拟器名称和安装日期。格式:模拟器名时间例子:雷电模拟器2022年06月23日夜神模拟器2021年05年03......