3.0Spring Boot 工作机制与 Autoconfig 底层原理|学习笔记

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习3.0Spring Boot 工作机制与 Autoconfig 底层原理。

开发者学堂课程【Spring Boot 2.5.x 开发实战3.0Spring Boot 工作机制与 Autoconfig 底层原理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/853/detail/14068


3.0Spring Boot 工作机制与 Autoconfig 底层原理

 

内容介绍:

一.Java Spring Boot 目标

二.Spring Boot 2.0自动化配置机制

三.自动化配置机制核心

四.Spring Boot 2.0 自动化配置机制流程

五.面试题:自动化装配

六.监控自动化配置 Bean 代码

七.演示

 

一.Java Spring Boot 目标

Spring Boot 的设计的目标,就是叫傻瓜式敏捷式开发,简化整个 Java 应用程序的开发过程,首先是自动化的依赖的管理工作,配置相对简单,依赖解析也是自动化的,容器,包括中心点配置尽量完成,尽量通过少代码而实现整个Java项目的管理配置工作,这是它的一个初衷,好处是对于提升开发效率简化配置过程,非常有帮助。但是对学习造成了困扰,底层的封装不容易知道原理。

实际为了做一个 Java 的网站,需要改善了代码,大量 bean 的配置,文件得修改,十分复杂的,但是现在 Spring Boot2.0,这些工作已经都不需要去这么来做了,越来越简单。

好处:提升效率,简化配置

坏处:传统配置繁琐,容易出错

 

二.Spring Boot 2.0 自动化配置机制

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

三大注解:

@Configuration:早期就已经存在,实现自动化配置加载的一个过程,通过类型或者配置文件,完成一些特殊的配置的信息的设置。

@ComponentScan:完成组件的扫描,比如定义安全的组件,数据访问的组件都可以使用它来进行扫描,它可以指定一个包,去某个特定包进行扫描

@EnableAutoConfiguration:告诉当前程序启用自动化配置的机制,来完成工作。现在 SpringBootApplication 注解可以直接实现,大大简化了数据配置过程。

 

三.自动化配置机制核心

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

该过程与建造房屋类似,前期配置文件就是详细原材料,然后采集原材料,运输到工地上,工地可以看成一个大的容器,然后去建造房

#默认配置不符合要求可以排除一些类型

 

四.Spring Boot 2.0自动化配置机制流程

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

①Java Spring Boot 2.0启动(依赖,配置)

②自动化依赖(解析,加载)

③自动化配置(工厂模式创建 Bean,依赖注入)

④自动化服务器(内置 Web Server,监听)

#最小配置和必要配置

 

五.面试题:自动化装配

@SpringBootApplication = @EnableAutoConfiguration + @Configuration + @ComponentScan

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

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

1. AutoConfigurationPackages.Registrar 注册存储客 户端配置包列表的 bean,

2.便于以后使用。

3.Spring 引导在内部使用此列表,例如在

springboot-autoconfigure 的数据访问配置类中。  

4.可以通过静态方法 AutoConfigurationPackages.get (BeanFactory)访问此列表。

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

 

六.监控自动化配置 Bean 代码

image.png

好处:简化开发,不用很多复杂的配置

坏处:不了解底层原理,不了解底层的实现

 

七.演示

做一个 Bean 的打印列表,打印整个自动化配置实现的列表

image.png

启动查看执行过程,可以发现很多自动化配置是不需要的,很多实际是没有必要的

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

注意:自动化配置本身提高了效率,但是实际底层的过度封装导致性能和学习的难度加深,底层原理作为深入学习的铺垫

相关文章
|
3月前
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。
|
3月前
|
Java
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
这篇文章是Spring5框架的实战教程,深入讲解了AOP的基本概念、如何利用动态代理实现AOP,特别是通过JDK动态代理机制在不修改源代码的情况下为业务逻辑添加新功能,降低代码耦合度,并通过具体代码示例演示了JDK动态代理的实现过程。
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
|
1天前
|
Java Spring
SpringBoot自动装配的原理
在Spring Boot项目中,启动引导类通常使用`@SpringBootApplication`注解。该注解集成了`@SpringBootConfiguration`、`@ComponentScan`和`@EnableAutoConfiguration`三个注解,分别用于标记配置类、开启组件扫描和启用自动配置。
30 17
|
22天前
|
Java Spring 容器
springboot @RequiredArgsConstructor @Lazy解决循环依赖的原理
【10月更文挑战第15天】在Spring Boot应用中,循环依赖是一个常见问题,当两个或多个Bean相互依赖时,会导致Spring容器陷入死循环。本文通过比较@RequiredArgsConstructor和@Lazy注解,探讨它们解决循环依赖的原理和优缺点。@RequiredArgsConstructor通过构造函数注入依赖,使代码更简洁;@Lazy则通过延迟Bean的初始化,打破创建顺序依赖。两者各有优势,需根据具体场景选择合适的方法。
40 4
|
2月前
|
Java 应用服务中间件 API
Vertx高并发理论原理以及对比SpringBoot
Vertx 是一个基于 Netty 的响应式工具包,不同于传统框架如 Spring,它的侵入性较小,甚至可在 Spring Boot 中使用。响应式编程(Reactive Programming)基于事件模式,通过事件流触发任务执行,其核心在于事件流 Stream。相比多线程异步,响应式编程能以更少线程完成更多任务,减少内存消耗与上下文切换开销,提高 CPU 利用率。Vertx 适用于高并发系统,如 IM 系统、高性能中间件及需要较少服务器支持大规模 WEB 应用的场景。随着 JDK 21 引入协程,未来 Tomcat 也将优化支持更高并发,降低响应式框架的必要性。
Vertx高并发理论原理以及对比SpringBoot
|
29天前
|
Java Spring 容器
Spring底层原理大致脉络
Spring底层原理大致脉络
|
1月前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
120 9
|
2月前
|
Java 开发者 数据格式
【Java笔记+踩坑】SpringBoot基础4——原理篇
bean的8种加载方式,自动配置原理、自定义starter开发、SpringBoot程序启动流程解析
【Java笔记+踩坑】SpringBoot基础4——原理篇
|
1月前
|
XML 前端开发 Java
拼多多1面:聊聊Spring MVC的工作原理!
本文详细剖析了Spring MVC的工作原理,涵盖其架构、工作流程及核心组件。Spring MVC采用MVC设计模式,通过DispatcherServlet、HandlerMapping、Controller和ViewResolver等组件高效处理Web请求。文章还探讨了DispatcherServlet的初始化和请求处理流程,以及HandlerMapping和Controller的角色。通过理解这些核心概念,开发者能更好地构建可维护、可扩展的Web应用。适合面试准备和技术深挖
42 0
|
1月前
|
负载均衡 Java API
Spring Cloud原理详解
Spring Cloud原理详解
65 0
下一篇
无影云桌面