Spring Boot面试知识点总结(经典15问)
Spring Boot面试知识点总结(问答合集)
文章目录
- Spring Boot面试知识点总结(问答合集)
- 一、Spring Boot简介
- 二、核心特性
- 三、面试问题及答案
- 问题1:Spring Boot的核心配置文件是什么?
- 问题2:Spring Boot如何实现自动配置?
- 问题3:什么是Spring Boot的起步依赖?
- 问题4:Spring Boot内嵌了哪些Web服务器?
- 问题5:Spring Boot如何整合MyBatis?
- 问题6:Spring Boot如何实现健康检查?
- 问题7:Spring Boot如何处理静态资源?
- 问题8:Spring Boot如何配置多数据源?
- 问题9:Spring Boot如何实现事务管理?
- 问题10:Spring Boot如何进行性能优化?
- 四、其他常见问题
- 问题11:Spring Boot与Spring MVC的关系是什么?
- 问题12:Spring Boot如何处理异常?
- 问题13:Spring Boot如何集成Spring Security?
- 问题14:Spring Boot如何进行单元测试?
- 问题15:Spring Boot如何进行日志管理?
- 五、总结
一、Spring Boot简介
Spring Boot是一个基于Spring框架的开源项目,它简化了Spring应用的初始搭建以及开发过程。通过提供“约定优于配置”的方式,Spring Boot可以帮助开发者快速构建出生产级别的Spring应用。
二、核心特性
自动配置:Spring Boot根据添加的jar依赖自动配置你的Spring应用。
起步依赖:通过引入Spring Boot提供的起步依赖,开发者可以方便地将所需的依赖加入到项目中,无需手动管理复杂的依赖关系。
内嵌服务器:Spring Boot内嵌了Tomcat、Jetty或Undertow等Web服务器,使得开发者无需额外配置即可运行Web应用。
监控与管理:提供健康检查、度量收集等功能,便于应用的监控与管理。
三、面试问题及答案
问题1:Spring Boot的核心配置文件是什么?
答案:Spring Boot的核心配置文件是application.properties或application.yml。这两个文件用于配置Spring Boot应用的各项参数,如数据库连接信息、服务器端口号等。其中,application.yml采用了YAML格式,比application.properties更加简洁易读。
问题2:Spring Boot如何实现自动配置?
答案:Spring Boot通过@SpringBootApplication注解开启自动配置功能。该注解是@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解的组合。其中,@EnableAutoConfiguration是实现自动配置的关键,它会根据项目的类路径、jar包依赖等因素自动配置项目所需的组件。
问题3:什么是Spring Boot的起步依赖?
答案:起步依赖是Spring Boot提供的一组预先定义好的依赖集合,它包含了运行特定功能所需的所有依赖项。开发者只需要在项目的pom.xml文件中添加相应的起步依赖,即可快速引入所需的功能,无需手动管理大量的依赖关系。
问题4:Spring Boot内嵌了哪些Web服务器?
答案:Spring Boot内嵌了Tomcat、Jetty和Undertow三种Web服务器。开发者可以通过在application.properties或application.yml中设置server.servlet.container-type属性来选择使用哪种服务器。
问题5:Spring Boot如何整合MyBatis?
答案:Spring Boot整合MyBatis主要需要以下几个步骤:
添加MyBatis的起步依赖到项目的pom.xml文件中。
配置数据源信息,包括数据库URL、用户名和密码等。
创建MyBatis的Mapper接口和对应的XML映射文件。
在Spring Boot的配置类中使用@MapperScan注解指定Mapper接口所在的包路径。
在业务代码中注入Mapper接口并使用其提供的方法进行数据库操作。
问题6:Spring Boot如何实现健康检查?
答案:Spring Boot提供了Actuator模块来实现健康检查功能。通过添加Actuator的起步依赖,并启用相应的端点(endpoint),就可以获取应用的健康状态、性能指标等信息。开发者还可以通过自定义健康指示器来扩展健康检查的功能。
问题7:Spring Boot如何处理静态资源?
答案:Spring Boot默认将/resources/static、/resources/public、/resources/templates和/META-INF/resources这四个目录下的文件作为静态资源处理。开发者可以将静态文件(如HTML、CSS、JavaScript等)放在这些目录下,Spring Boot会自动将它们映射到相应的URL路径下。
问题8:Spring Boot如何配置多数据源?
答案:Spring Boot配置多数据源主要需要以下几个步骤:
在application.properties或application.yml中配置多个数据源的信息。
创建多个数据源的配置类,分别使用@Configuration和@Bean注解定义不同的数据源和SqlSessionFactory。
使用@Primary注解指定一个默认的数据源,用于处理没有指定数据源的情况。
在需要使用特定数据源的Mapper接口上添加@Qualifier注解来指定数据源。
问题9:Spring Boot如何实现事务管理?
答案:Spring Boot使用Spring框架提供的事务管理功能。开发者可以通过在Service层的方法上添加@Transactional注解来开启事务管理。Spring Boot会根据方法的执行情况和配置的隔离级别、传播行为等参数来自动管理事务的提交和回滚。
问题10:Spring Boot如何进行性能优化?
答案:Spring Boot进行性能优化可以从多个方面入手,包括:
优化数据库操作:使用合适的索引、避免N+1查询、减少不必要的数据库连接等。
缓存优化:利用Spring Boot集成的缓存框架(如Redis、Caffeine等)缓存热点数据,减少数据库访问次数。
异步处理:使用Spring Boot的异步支持,将耗时操作放在后台线程处理,提高应用的响应速度。
压缩与响应式编程:启用HTTP响应压缩,减少传输数据量;使用响应式编程模型处理大量数据,提高吞吐量。
监控与调优:使用Spring Boot Actuator、Prometheus等工具进行性能监控,根据监控数据进行性能调优。
代码优化:遵循最佳编码实践,避免不必要的对象创建和内存消耗,优化循环和算法复杂度。
四、其他常见问题
问题11:Spring Boot与Spring MVC的关系是什么?
答案:Spring Boot是基于Spring框架构建的,而Spring MVC是Spring框架中的一个模块,用于构建Web应用。Spring Boot为Spring MVC提供了自动配置和简化的开发体验,使得开发者能够更快速地构建Web应用。
问题12:Spring Boot如何处理异常?
答案:Spring Boot提供了全局异常处理机制,开发者可以通过实现@ControllerAdvice注解的类来定义全局异常处理器。在这个类中,可以定义多个方法,使用@ExceptionHandler注解来指定处理特定类型的异常。当应用发生异常时,Spring Boot会自动调用相应的异常处理方法进行处理。
问题13:Spring Boot如何集成Spring Security?
答案:Spring Boot集成Spring Security主要需要以下几个步骤:
添加Spring Security的起步依赖到项目的pom.xml文件中。
创建Spring Security的配置类,继承WebSecurityConfigurerAdapter并重写相应的方法来自定义安全策略。
配置用户信息、权限信息等。
在需要保护的URL或方法上添加安全注解(如@Secured、@PreAuthorize等)。
问题14:Spring Boot如何进行单元测试?
答案:Spring Boot支持使用JUnit等测试框架进行单元测试。开发者可以编写针对业务逻辑、控制器、服务层等的测试用例,并使用Spring Boot提供的测试注解(如@SpringBootTest)来加载应用上下文和配置。此外,Spring Boot还提供了MockMvc等工具来模拟HTTP请求并验证响应结果,方便进行Web层的测试。
问题15:Spring Boot如何进行日志管理?
答案:Spring Boot使用SLF4J+Logback作为默认的日志框架。开发者可以通过在application.properties或application.yml中配置日志级别、输出格式等参数来管理日志。此外,Spring Boot还提供了Actuator模块的日志端点,可以实时查看和修改日志级别。对于更复杂的日志需求,开发者还可以集成其他日志框架或工具进行扩展。
五、总结
Spring Boot作为一个现代化的Java Web开发框架,简化了应用的搭建和开发过程,提高了开发效率。掌握Spring Boot的核心知识点和常见面试问题,对于Java开发者来说是非常有必要的。通过不断学习和实践,我们可以更好地利用Spring Boot构建出高性能、易维护的Web应用。
相关文章:
Spring Boot面试知识点总结(经典15问)
Spring Boot面试知识点总结(问答合集) 文章目录 Spring Boot面试知识点总结(问答合集)一、Spring Boot简介二、核心特性三、面试问题及答案问题1:Spring Boot的核心配置文件是什么?问题2:Spring…...
安卓手机原生运行 ARM Ubuntu 24.04 桌面版(一)
本篇文章,聊一聊尝试让安卓手机原生运行 Ubuntu,尤其是运行官方未发布过的 ARM 架构的 Ubuntu 24.04 桌面版本。 写在前面 最近的几篇文章,都包含了比较多的实操内容、需要反复的复现验证,以及大量的调试过程,为了不…...
AHB---数据总线
1. 数据总线 为了实现AHB系统,需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位,但这可以根据数据总线宽度进行更改。 数据总线包含以下部分: HWDATAHRDATAEndianness(字节序) 1.1 HWDATA 在写传输…...
「51媒体」企业单位新闻稿件考核,怎么发布
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 电力税务企事业单位部门等单位提供了新闻稿件,如何在一些重点媒体进行宣发呢: 精准锁定发布媒体 了解考核要求:仔细阅读宣传任务名单,了解…...
「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解
CycloneDX是软件供应链的现代标准。CycloneDX物料清单(BOM)可以表示软件、硬件、服务和其他类型资产的全栈库存。该规范由OWASP基金会发起并领导,由Ecma International标准化,并得到全球信息安全界的支持,如今CycloneD…...
React 之 内置标签<Fragment> (<>...</>) (十一)
通常使用 <>…</> 代替,它们都允许你在不添加额外节点的情况下将子元素组合。相当于vue的内置标签<template/> 1. 返回多个元素 <><OneChild /><AnotherChild /> </>2. 分配多个元素给一个变量 和其他元素一样…...
Mac M1 解决安装grpcio不可用
问题描述: 使用 pip 已经更新 grpcio 至最新版,调用时还是报错 如下图: Traceback (most recent call last):File "/Users/yu/anaconda3/envs/dify2/lib/python3.10/site-packages/flask/cli.py", line 245, in locate_app__imp…...
Linux第三节--常见的指令介绍集合(持续更新中)
点赞关注不迷路!,本节涉及初识Linux第三节,主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀 期待与你共同进步! Linux下基本指令 1. man指令 Linu…...
SpringMVC简介和体验
一、SpringMVC简介和体验 1.1 介绍 Spring Web MVC :: Spring Framework Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称( spring-webmvc )&#…...
Android单行字符串末尾省略号加icon,图标可点击
如图 设置仅显示单行字符串,末尾用省略号,加跟一个icon,icon可点击 tvName.text "test"val drawable ResourcesCompat.getDrawable(resources, R.mipmap.icon_edit, null)tvName.setCompoundDrawablesWithIntrinsicBounds(null,…...
山东省文史书画研究会成立20周年系列活动徽标征集胜选名单公布
2024年5月1日,山东省文史书画研究会成立20周年系列活动徽标征集落下帷幕。征稿启事下发后,得到社会各界人士的广泛关注与参与,共收到设计方案608件。经过初评,选出5幅作品进入复评,并经过网络投票和专家投票相结合的方…...
相机2:曝光三要素之ISO(感光度)
曝光是相机的感光元件与光线接触成像的过程,而曝光三要素分别指的是光圈大小,快门速度和感光度。这三个因素都可以控制曝光量,同时也分别有自己的特点。 什么是感光度? ISO又叫感光度,指的是相机感光元件(…...
已解决java.util.IllegalFormatConversionException异常的正确解决方法,亲测有效!!!
已解决java.util.IllegalFormatConversionException异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 示例报错代码: 解决思路 解决方法 检查和更正格式说明符 示例修正代码: 调整参数类型…...
OpenCV 库来捕获和处理视频输入和相似度测量(73)
返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV的周期性噪声去除滤波器(70) 下一篇 :使用 OpenCV 创建视频(74) 目标 如今,拥有数字视频录制系统供您使用是很常见的。因此,您最终会遇到不再处理一批图像…...
了解TMS运输管理系统,实现物流高效运转
TMS运输管理系统(Transportation Management System)是一种集成物流和信息技术的解决方案,通过优化运输流程、实时跟踪货物信息和自动化管理操作,提高物流效率,降低运营成本,实现高效运输。 TMS运输管理系…...
数据库原理与应用实验三 嵌套查询
实验目的和要求 加深和掌握对嵌套查询的理解和应用 实验环境 Windows10 SQLServer 实验内容与过程 图书(书号,书名,价格,出版社) 读者(卡号,姓名,年龄,所属单位&a…...
LeetCode 110.平衡二叉树(Java/C/Python3/Go实现含注释说明,Easy)
标签 树深度优先搜索递归 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡的二叉树定义为: 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 原题:LeetCode 110.平衡二叉树 思路及…...
【SQL】ACID事务与隔离级别
数据库事务 数据库事务具有ACID这4个特性: A:Atomicity,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;C:Consistency,一致性,事务完…...
深度神经网络中的不确定性研究综述
A.单一确定性方法 对于确定性神经网络,参数是确定的,每次向前传递的重复都会产生相同的结果。对于不确定性量化的单一确定性网络方法,我们总结了在确定性网络中基于单一正向传递计算预测y *的不确定性的所有方法。在文献中,可以找…...
实用的Chrome浏览器命令
Google Chrome 是一款广泛使用的网络浏览器,它提供了许多实用的快捷键和命令,可以帮助用户更高效地浏览网页。以下是一些常用的 Chrome 浏览器命令: 1. 新标签页: Ctrl T (Windows/Linux) 或 Command T (Mac) 2. 关闭当前标签: Ctrl W 或…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
