spring boot 面试突击

本文介绍了SpringBoot框架,强调其自动配置功能简化开发,starter简化依赖管理和约定配置,以及actuator模块的监控功能。同时讨论了自动配置的原理和如何通过@ConfigurationProperties绑定配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 基本概述

1. 背景介绍

spring boot是一个spring官方推出的开源框架,目的是降低spring的使用难度,比如它的自动配置功能可以省去繁杂的配置工作,比如它提供了许多启动器,让开发人员能快速搭建一个spring应用。

2. 优缺点

  • 优点:

    • 更简单地进行编码:它提供了自动配置功能,减少了开发人员的配置工作;它遵循约定大于配置原则,提供了许多默认的配置,让开发人员可以快速开始业务编码,而不需要过多关注配置
    • 更简单地进行部署:它内置了常见的服务器(如:Tomcat),使得应用程序可以作为一个独立的jar文件运行
    • 更简单地进行监控:它集成了各种监控工具(如:spring boot actuator),方便查看程序的健康状况
  • 缺点:

    • 集成了大量功能组件,程序体积变大,启动变慢

二. 核心原理

1. 自动配置

1.1 概念介绍

springBoot可以根据项目中引入的依赖库和配置信息,自动配置各种组件和功能,大大简化了开发者的工作,让开发者可以快速构建出一个完整的应用程序。

1.2 原理介绍

springBoot的自动配置主要包括两个过程:

  1. 获取自动配置类:spring boot需要读取META-INF目录下,spring.factories文件中的自动配置类
  2. 获取配置文件中的配置:spring boot需要将将配置文件中的参数与自动配置类绑定

以下是具体过程:

①. 引入AutoConfigurationImportSelector类:
在springBoot的启动类上有个@springBootConfiguration注解,
该注解包含一个@EnableAutoConfiguration注解,
这个注解本身又包含一个@Import注解,最后@Import注解引入这个AutoConfigurationImportSelector类:
@Import(AutoConfigurationImportSelector.Class)

②:找到spring .factories文件:
该组件有一个selectorImports方法,这个方法通过springFactoriesLoader .loaderFactoryName()加载所有META-INF下的spring .factories文件,这些文件中以键值对的形式存放了一些后缀名为AutoConfiguration的某某AutoConfiguration自动配置类

③. 实例化这些自动配置类:
spring boot可以通过各种条件注解,让这些自动配置类在满足条件的时候生效,
比如@conditionalOnBean@conditionalOnMissingBean,可以在容器中有或者没有指定bean的时候生效,spring boot会根据这些条件将它们实例化

④. 读取配置文件中的配置
在实例化之后,spring boot会读取配置文件中的参数,绑定到类中对应的属性上,这个过程是通过@ConfigurationProperties完成的,pring Boot会自动读取配置文件中的属性值,并将其绑定到对应的@ConfigurationProperties注解标注的类的属性上

每个自动配置类上面有一个@EnableConfigurationProperties注解,@EnableConfigurationProperties注解是用来开启属性配置的,其后带一个参数,通常是一个以“Properties”结尾的类(例如MyProperties.class)。这个类里面的属性对应了配置文件中的配置项,通过@ConfigurationProperties注解可以将配置文件中的参数绑定到这些属性上,完成属性配置。

@ConfigurationProperties注解用于将外部配置文件中的属性值与一个JavaBean的属性进行绑定

⑤. 导入到容器
最后,将绑定好参数的自动配置类放入容器中,至此,springBoot的自动配置完成

自动配置流程

2. starter

2.1 概念介绍

springBoot中的starter是一种用于简化依赖管理的特殊类型依赖项,它包含了一组预定义的依赖项,配置文件,自动配置类的实现,使得开发人员可以快速构建出一个spring应用程序;通俗点讲就是:starter就是对一个实现了某个功能的模块的封装,这个模块要实现功能需要一些依赖,还有必要的配置,starter就集成了这些依赖和配置,另外还有关于这些依赖相关的自动配置类,spring boot需要扫描并导入它们到容器中
一个starter包含以下部分:

  1. 依赖项:包含了实现这个功能的一系列依赖,比如,spring-boot-starter-web这个starter是一个用于实现web功能的模块,它需要依赖servlet、tomcat等
  2. 配置文件:starter会为依赖项提供默认配置,遵循着“约定大于配置”原则,做到开箱即用
  3. 自动配置类:spring boot根据这些自动配置类信息结合配置文件,自动配置它们

2.2 原理介绍

这些导入的依赖项jar包中,会包含对应的spring.factories文件,spring boot会自动扫描这些jar包下的spring.factories文件,通过自动配置功能,完成依赖的配置工作(具体过程如上2.1)。所以我们在引入一个starter的时候,不需要做过多的配置和引入相关依赖,starter中已经包含了必要的信息,而spring boot会根据这些信息自动加载它们,我们直接用就行

3.springBoot如何读取配置文件

  1. 通过@ConfigurationProperties
  2. 通过@Value

4. actutor

这是springBoot中的一个模块,主要用于监控和管理应用程序,它内置了很多端点,通过访问这些端点,可以查看程序的健康状态,配置信息,日志,性能指标等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值