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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 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,但是实际是没有必要的 

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

 

相关文章
|
监控 安全 Dubbo
1.Spring Boot2.5实战课程大纲与新特性介绍|学习笔记
快速学习1.Spring Boot2.5实战课程大纲与新特性介绍。
202 0
1.Spring Boot2.5实战课程大纲与新特性介绍|学习笔记
|
缓存 NoSQL Java
Spring Boot 2.5.x开发实战 | 开发者学堂课程干货总结合集
Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路
2587 3
Spring Boot 2.5.x开发实战 | 开发者学堂课程干货总结合集
|
缓存 监控 安全
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(一)
Spring Boot 2.5.x开发实战课时1——Spring Boot2.5实战课程大纲与新特性介绍,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(一)
|
缓存 NoSQL 安全
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(六)
Spring Boot 2.5.x开发实战课时6——Spring Boot 2.5实战Redis分布式缓存6.0 ,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(六)
|
存储 NoSQL Java
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(四)
Spring Boot 2.5.x开发实战课时4——Spring Boot2.5使用Spring Data链接MySQL数据库,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(四)
|
监控 前端开发 Java
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(八)
Spring Boot 2.5.x开发实战课时8——Spring Boot 2.5实战API帮助文档Swagger,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(八)
|
缓存 安全 Java
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(七)
Spring Boot 2.5.x开发实战课时7——Spring Boot2.5安全机制与 REST API身份验证实战,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(七)
|
存储 监控 NoSQL
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(五)
Spring Boot 2.5.x开发实战课时5——Spring Boot 2.5实战MongoDB数据库与面试题,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(五)
|
存储 监控 前端开发
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(三)
Spring Boot 2.5.x开发实战课时3——Spring Boot2.5自动化配置Autoconfig底层原理 ,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(三)
|
前端开发 Java 应用服务中间件
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(二)
Spring Boot 2.5.x开发实战课时2——Spring Boot2.5实战开发REST API模拟淘宝订单接口 ,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦
开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(二)