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

简介: 快速学习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 开发者
【Spring】原理:Bean的作用域与生命周期
本文将围绕 Spring Bean 的作用域与生命周期展开深度剖析,系统梳理作用域的类型与应用场景、生命周期的关键阶段与扩展点,并结合实际案例揭示其底层实现原理,为开发者提供从理论到实践的完整指导。
524 22
|
3月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
1415 0
|
5月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
969 0
|
2月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
2月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
344 3
|
2月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
446 2
|
4月前
|
Java 关系型数据库 数据库
深度剖析【Spring】事务:万字详解,彻底掌握传播机制与事务原理
在Java开发中,Spring框架通过事务管理机制,帮我们轻松实现了这种“承诺”。它不仅封装了底层复杂的事务控制逻辑(比如手动开启、提交、回滚事务),还提供了灵活的配置方式,让开发者能专注于业务逻辑,而不用纠结于事务细节。
|
5月前
|
前端开发 Java 数据库连接
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
|
7月前
|
前端开发 Java 数据库连接
Spring核心原理剖析与解说
每个部分都是将一种巨大并且复杂的技术理念传达为更易于使用的接口,而这就是Spring的价值所在,它能让你专注于开发你的应用,而不必从头开始设计每一部分。
224 32
|
5月前
|
缓存 安全 Java
Spring 框架核心原理与实践解析
本文详解 Spring 框架核心知识,包括 IOC(容器管理对象)与 DI(容器注入依赖),以及通过注解(如 @Service、@Autowired)声明 Bean 和注入依赖的方式。阐述了 Bean 的线程安全(默认单例可能有安全问题,需业务避免共享状态或设为 prototype)、作用域(@Scope 注解,常用 singleton、prototype 等)及完整生命周期(实例化、依赖注入、初始化、销毁等步骤)。 解析了循环依赖的解决机制(三级缓存)、AOP 的概念(公共逻辑抽为切面)、底层动态代理(JDK 与 Cglib 的区别)及项目应用(如日志记录)。介绍了事务的实现(基于 AOP
198 0