首页 > 其他分享 >SpringBoot的自动化配置原理

SpringBoot的自动化配置原理

时间:2024-02-01 21:12:43浏览次数:21  
标签:配置 SpringBoot spring 自动化 扫描 EnableAutoConfiguration 注解 原理 方法

1.启动类上有一个注解,是一个复合注解,由三个注解组成

第一个注解是@SpringBootConfiguration,底层是一个@Configuration注解,表示当前类是一个配置类

第二个注解是@ComponentScan是一个组件扫描,spring会扫描引导类所在包及子包下的组件

第三个注解是@EnableAutoConfiguration

注解@EnableAutoConfiguration点进去之后会有一个注解@Import,属性是AutoConfigurationImportSelector.class

AutoConfigurationImportSelector类点进去后有一个selectImports方法,里面有一个getAutoConfigurationEntry方法,返回一个配置类的键值对,然后将这个键值对转换为一个字符串数组进行返回

getAutoConfigurationEntry方法点进去后有一个getCandidateConfigurations方法,会返回一个泛型为String的List集合

getCandidateConfigurations方法中new了一个集合,其中的元素为SpringFactoriesLoader类中的loadFactoryNames方法返回的字符串集合

自动配置类需要在这两个配置文件中


loadFactoryNames方法的第一个参数为getSpringFactoriesLoaderFactoryClass方法,这个方法返回的就是EnableAutoConfiguration.class

进入到loadFactoryNames方法,获取传入的EnableAutoConfiguration的全类名,并使用loadSpringFactories方法进行返回


从指定类加载器中获取一个集合,扫描META-INF/spring.factories文件中的资源

注册自动配置包名

一些自动配置类的条件

总结
1:启动类上有一个注解,是一个复合注解,由三个注解组成
第一个注解是@SpringBootConfiguration,底层是一个@Configuration注解,表示当前类是一个配置类

第二个注解是@ComponentScan是一个组件扫描,spring会扫描引导类所在包及子包下的组件

第三个注解是@EnableAutoConfiguration
底层是通过@Import注解导入一个AutoConfigurationImportSelector配置类,这个配置类会自动调用selectImports方法,这个方法会扫描META-INF/spring.factories的文件中key为EnableAutoConfiguration的所有数据,同时还会扫描META-INF/spring/org.springframework.boot.autoconfiguration.AutoConfiguration.imports中的数据,再经过@ConditionalXxx的条件判断,把满足条件的内容加载到内存中,封装成一个字符串数组

2.启动类中的run方法
这个方法会把上面注解实现加载到到内存中的字符串数组,根据条件,反射创建对象,把对象当做bean注入spring容器中

标签:配置,SpringBoot,spring,自动化,扫描,EnableAutoConfiguration,注解,原理,方法
From: https://www.cnblogs.com/zhao-zong-yu-hai/p/18002104

相关文章

  • Selenium自动化测试之python
    1、简介Selenium是一个自动化测试工具,它支持多种浏览器和操作系统,可以模拟真实用户的行为,如点击、输入文本、滚动页面等。Selenium可以在多种编程语言中使用,如Java、Python、C#等。它可以帮助测试人员快速、准确地测试应用程序的功能和性能。Selenium还提供了丰富的API和库,使得测......
  • SpringBoot3 整合 SQLite3 + MybatisPuls
    !!前置要求!!假设你已经掌握SpringBoot3、Maven、Mybaits、MybatisPuls。假设你已经新建好SQLite3测试库。如果没有可以按此结构新建,保存到任意位置。1.项目结构2.依赖注意SpringBoot3版本这边用最新的打包失败,所以改用3.1.2pom.xml<?xmlversion="1.0"encoding="......
  • SpringBoot自动化配置原理
    先在pom.xml文件中引入配置依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.1.4.RELEASE</version>&......
  • 【APP自动化进阶】APP自动化项目框架实战
    一、自动化项目介绍1.涉及技术栈pythonappiumseleniumpytestalluresubprocessadb2.实现的功能概述APP自动化执行支持pytest生成测试报告多线程执行自动开启、关闭appium、allure等服务二、框架及项目结构项目目录app---apk文件base---核心方法driver.py-......
  • SpringBoot自动化配置
    SpringBoot自动化配置一.SpringBoot自动化配置原理1.SpringBoot引导类注解介绍在SpringBoot的启动引导类上有一个@SpringBootApplication注解这个注解中有三个Spring的注解,分别是@SpringBootConfiguration/@CompoenetScan/@EnableAutoConfiguration2.@SpringBootCo......
  • 浅谈UI自动化测试
    为了让对自动化技术感兴趣的朋友们有真实案例的支持,今天我们给大家带来一期适合新手的UI自动化测试介绍。我们的目标是让大家能够轻松理解UI自动化测试的概念,并且能够亲自动手去实践。通过这个介绍,大家能够对UI自动化测试有一个整体的理解,并且能够自己动手去做。项目的选取:虽然U......
  • springboot接口加解密传输
    前言:写这个博客的目的也是想着后面如果需要用上的时候方便参考,这篇文章使用的也是比较简单的加解密流程,但这篇文章注重点是后端对于前端传过来的加密参数怎么接收,然后统一拦截解密后又回到原本接口上,接口返回结果时又是怎么将结果集加密后传输出去还有一个很重要的......
  • springboot实现文件上传
    编程环境介绍:springboot2.7.4接收前端提交的文件请求方式:Post请求路径:/upload实现步骤前端: 后端:接受类型为mutipartFile新建controller内方法用于接收文件获取文件内容输入流,写入到本地磁盘@PostMapping("upload")publicResult<String>upload(MultipartFile......
  • CAS单点登录原理解析
    前段时间时间需要和其他项目做cas集成,于是乎在网上找了几篇教程看了一下,好了,很简单,学会了,开搞(自以为研究明白)。集成完事了,登录成功了,自以为这就过去了。然而,没过几天就出bug了,这下惨了,当初没有好好学出了问题都不知道咋解决。无奈,只得静下心来好好学习一番(当初太懒付出的代价)。......
  • CAS—认证原理
    摘要:以下是对SSO的简要介绍,重点介绍CAS认证过程。CASClient负责处理对客户端受保护资源的访问请求。当需要...展开CAS,CentralAuthenticationService—中央认证服务,是Yale大学发起的一个企业级的、开源的项目。旨在为Web应用系统提供一种可靠的SSO解决方式。以下简......