当前位置:主页 > 查看内容

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

发布时间:2021-06-07 00:00| 位朋友查看

简介:哈喽各位同学们大家好呀 新一周的第一天小编为大家分享开发者学院中课程“Spring Boot2.5自动化配置Autoconfig底层原理”干货总结哦~Spring Boot 2.5.x开发实战可是Java中级工程师必备课程 课程链接以及图谱地址小编已经为大家指路了 搭配学习效果更佳 课程……

哈喽各位同学们大家好呀 新一周的第一天小编为大家分享开发者学院中课程“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以后做的一些自动化配置的机制。?

Spring Boot auto configuration??
Spring Boot 自动配置??
尝试根据classpath的jar依赖自动配置Spring应用。?
? AutoConfiguration注解 过期?
? Configuration注解??
? EnableAutoConfiguration注解?
? SpringBootApplication 注解 2.0版本新增?
?Auto-configuration is non-invasive 非侵入式??
?也可以禁用自动配?

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的一个扩展点。?

AutoConfigurationPackages.Registrar注册存储客 户端配置包列表的bean ?
?便于以后使用。?
?Spring引导在内部使用此列表 例如 在springboot-autoconfigure的数据访问配置类中。??
?可以通过静态方法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 但是实际是没有必要的。?

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

?


本文转自网络,原文链接:https://developer.aliyun.com/article/784535
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐