开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(三)

简介: Spring Boot 2.5.x开发实战课时3——Spring Boot2.5自动化配置Autoconfig底层原理 ,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦

哈喽各位同学们大家好呀,新一周的第一天小编为大家分享开发者学院中课程Spring Boot2.5自动化配置Autoconfig底层原理干货总结哦~Spring Boot 2.5.x开发实战可Java中级工程师必备课程;

课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇

课程名称:Spring Boot 2.5.x开发实战

课程地址:https://developer.aliyun.com/learning/course/71?spm=a2c6h.21254954.0.0.4e905907uoWZzr

图谱名称:Alibaba Java 技术图谱

图谱地址:https://developer.aliyun.com/graph/java?spm=a2c6h.21110250.J_5703890090.6.700e3c67EjOBeJ


Spring Boot2.5自动化配置Autoconfig底层原理 


(一)Java Spring Boot 2.5 自动化配置机制解析  

1、Java Spring Boot目标 

Spring Boot设计的目标,就是叫敏捷式开发简化整个Java应用程序的开发过程,首先是自动化的依赖的管理工作配置相对简单,依赖解析也是自动化的,容器,包括中心点配置尽量完成,尽量通过少代码而实现整个Java项目的管理配置工作,这是它的一个初衷对于提升开发效率简化配置过程,非常有帮助。 

image.png 

2、Bean配置 

因为底层封装的时候非常隐蔽,不容易知道其中的一些实验原理,实际为了做一个Java的网站,需要改善了代码,大量/bean的配置文件修改十分复杂的,但是现在Spring Boot2.0这些工作已经都不需要去这么来做了,越来越简单。 

image.png 

(二)Spring Boot 2.0自动化 配置机制 

1、Spring Boot 2.0自动化配置机制  

底层具体操作过程自动化配置就是整个审核的项目会自动完成一个配置的解析包的加载过程下载加载过程以及注入过程,甚至包括容器环境的一些配置最核心的是在2.0以后有个重点SpringBootApplication ,背后是其他几个注解的一个捆绑体,另外一个观点提出了叫非侵入式但是完全做非侵入式还是比较难,但是有两种选择,通过配置文件参数配置的方式来完成,通过代码的方式来做 

以下是SpringBoot2.0以后做一些自动化配置的机制 

  1. Spring Boot auto configuration  
  2. Spring Boot 自动配置  
  3. 尝试根据classpath的jar依赖自动配置Spring应用。 
  4. @AutoConfiguration注解 过期 
  5. @Configuration注解  
  6. @EnableAutoConfiguration注解 
  7. @SpringBootApplication 注解 2.0版本新增 
  8. Auto-configuration is non-invasive 非侵入式  
  9. 也可以禁用自动配 

2、@SpringBootApplication 注解等于三大注解  

上节课写的程序里面,实际底层背后配置相关有三大注解: 

@EnableAutoConfiguration:enable Spring Boot’s autoconfiguration mechanism 

 @ComponentScan: enable @Component scan on the package where the application is located (see the best practices)  

@Configuration: allow to register extra beans in the context or import additional configuration classes 

configuration注解,在早期的使用MVC里面,Spring框架里面已经,用来实现自动化配置的加载的过程可以去设置一些通过类型配置文件来做 

ComponentScan可以去做一些组件的扫描如安全的组件,数据访问层的业务流程的组件甚至其他一些模型的实体的组件,都可以标记完以后由它来进行扫描,如指定一个包去特定包下面进行扫描那些组件。 

EnableAutoConfiguration在 SpringBoot里就提供了主要是告诉当前的程序启用什么,启用自动化配置的一个机制,现在SpringBootApplication注解可以直接来实现大大简化了数据配置过程 

3、自动化配置机制核心  

•spring-boot-autoconfigure.jar  

•spring.factorie 

image.png 

之前讲过的项目,在SpringBoot依赖包里面有autoconfigure依赖包,它里面实际对整个SpringBoot的加载做了很多扩展在配置、解析、加载等等一系列过程中的话,埋下点,可以再进行工作的扩展如在配置刚加载的时候,拦截校验,配置下载完成以后,可以去修改它配置参数等等一系列工作。 

4、@SpringBootApplication 注解 

image.png 

 

5、@SpringBootApplication注解机制  

1.@SpringBootApplication注解= @SpringBootConfiguration+ @EnableAutoConfiguration + @ComponentScan 之和  

2.@Configuration 将该注解类标记为应用程序上下文的bean来 源。 3.@EnableAutoConfiguration告诉Spring Boot自动配置添加 bean。 

4.通常手动会为Spring MVC应用程序添加@EnableWebMvc 

5.但Spring Boot会在类路径上看到spring-webmvc时自动添加 它该注解 

6.为Web应用添加并启用关键特性,例如设置DispatcherServlet。 

7.@ComponentScan告诉Spring 扫描组件,配置和服务,控制 

(三)Spring Boot 2.5自动化 配置机制流程  

1、Java Spring Boot 2.x 启动过程 

Spring Boot成为启动过程中,配置这个选项是非常重要,当然也有一些默认参数显示配置和默认配置,当它内置的有一个默认的配置清单,加一个starter的一个依赖,是背后有一个默认清单,然后逐步去把所有的默认的配置,版本号对应版本的包给拉进来。 

image.png 

2、面试题:自动化装配 

@SpringBootApplication= 

@EnableAutoConfiguration + 

@Configuration 

@ComponentScan 

本质上还是早期Spring实现的叫配置的一个注解configuration加上组件扫描,启用制造位置,只告诉当前的程序要启用一系列默认的默认的策略有清单要找一下有可能有拦截的代码,想办法给去检查一下是否执行相关逻辑的扩展代码。 

3、AutoConfigurationPackages 

@EnableAutoConfiguration 在里面担任的角色是非常重要的,实际是另外一个扩展点,针对SpringBoot的一个扩展点。 

  1. AutoConfigurationPackages.Registrar注册存储客 户端配置包列表的bean, 
  2. 便于以后使用。 
  3. Spring引导在内部使用此列表,例如 在springboot-autoconfigure的数据访问配置类中。  
  4.  可以通过静态方法AutoConfigurationPackages.get (BeanFactory)访问此列表: 

包加载有一个专门的 AutoConfigurationPackages.Registrar管理的一个类型属于SpringBoot的一个扩展。 

4、ImportSelector 

1. 导入选择器  

2. @Import (EnableAutoConfigurationImportSelector.class)  

3. 此批注负责引导自动配置机制。  

4. EnableAutoConfigurationImportSelector实现 DeferredImportSelector。  

5. 这个选择器实现使用Spring核心 SpringFactoriesLoader.loadFactoryNames(),  

6. 它从META-INF / spring.factories加载配置类 

(四)Spring Boot 2.0监控自 动化配置Bean 

1、监控自动化配置Bean代码 

监控一下整个Bean的注入过程,如下图所示, 

image.png 

举例 

image.png 

 

有些是根本用不到,只需要请求路由,请求的处理,然后加上一系列的虚拟化反应的话就可以看到上面那个机制,它加载了可能上百个Bean,但是实际是没有必要的 

使用波段的本身,自动化的配置的过程,确实是大大减化了配置工作,提升了开发的效率 

 

相关文章
|
XML 缓存 运维
springboot注解(全)
springboot注解(全)
832 0
|
2月前
|
算法 Python
ABCDE题|2025年华为杯|研究生数学建模|思路、代码、论文|持续更新中....
ABCDE题|2025年华为杯|研究生数学建模|思路、代码、论文|持续更新中....
323 1
|
资源调度 关系型数据库 MySQL
若依框架部署从零开始2023版(前后端分离)
电脑最近重装了一次系统,目前什么都没有安装,记录一下从零开始部署前后端分离版本的若依框架系统先去官网把若依源码拉下来。
1603 0
kde
|
运维 关系型数据库 MySQL
宝塔面板 Docker 镜像加速教程
本文介绍了如何为宝塔面板中的 Docker 配置轩辕镜像加速。内容包括:安装 Docker 管理器、获取镜像加速地址、配置加速 URL 以及验证设置等步骤。通过使用免费版或专业版加速地址(如 docker.xuanyuan.me 或 xuanyuan.cloud),可显著提升镜像拉取速度。同时,还提供了日常使用方法和注意事项,帮助用户顺利完成配置并保障 Docker 服务稳定运行。
kde
222 0
|
10月前
|
存储 弹性计算 调度
基于Knative的LLM推理场景弹性伸缩方案
Knative的基于请求弹性配置与大语言模型(LLM)的推理场景高度契合。此外,它的资源降配特性可以显著帮助用户降低成本。本文详细介绍基于 Knative 的 LLM 推理场景弹性伸缩方案。
|
7月前
|
人工智能 云计算
阿里云产品手册2025版发布
阿里云产品手册2025版发布,涵盖阿里云产品大图、面向 AI 的全栈云计算产品体系等最新内容,囊括了阿里云产品介绍、优势、功能、应用场景和发展历程的介绍。
932 12
|
8月前
|
人工智能 编解码 算法
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
504 5
|
数据安全/隐私保护
锐捷交换机Console密码忘了,怎么破?
锐捷交换机Console密码忘了,怎么破?
1661 0
锐捷交换机Console密码忘了,怎么破?
|
8月前
|
弹性计算 人工智能 架构师
一文揭秘|如何速成RAG+Agent框架大模型应用搭建(二)
一文揭秘|如何速成RAG+Agent框架大模型应用搭建
613 4