当前位置: 首页 > news >正文

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> (<>...</>) (十一)

通常使用 <>…</> 代替&#xff0c;它们都允许你在不添加额外节点的情况下将子元素组合。相当于vue的内置标签<template/> 1. 返回多个元素 <><OneChild /><AnotherChild /> </>2. 分配多个元素给一个变量 和其他元素一样&#xf…...

Mac M1 解决安装grpcio不可用

问题描述&#xff1a; 使用 pip 已经更新 grpcio 至最新版&#xff0c;调用时还是报错 如下图&#xff1a; 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第三节--常见的指令介绍集合(持续更新中)

点赞关注不迷路&#xff01;&#xff0c;本节涉及初识Linux第三节&#xff0c;主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1f44d;&#x1f3fb; 收藏 ✨ 加关注&#x1f440; 期待与你共同进步! Linux下基本指令 1. man指令 Linu…...

SpringMVC简介和体验

一、SpringMVC简介和体验 1.1 介绍 Spring Web MVC :: Spring Framework Spring Web MVC是基于Servlet API构建的原始Web框架&#xff0c;从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称&#xff08; spring-webmvc &#xff09;&#…...

Android单行字符串末尾省略号加icon,图标可点击

如图 设置仅显示单行字符串&#xff0c;末尾用省略号&#xff0c;加跟一个icon&#xff0c;icon可点击 tvName.text "test"val drawable ResourcesCompat.getDrawable(resources, R.mipmap.icon_edit, null)tvName.setCompoundDrawablesWithIntrinsicBounds(null,…...

山东省文史书画研究会成立20周年系列活动徽标征集胜选名单公布

2024年5月1日&#xff0c;山东省文史书画研究会成立20周年系列活动徽标征集落下帷幕。征稿启事下发后&#xff0c;得到社会各界人士的广泛关注与参与&#xff0c;共收到设计方案608件。经过初评&#xff0c;选出5幅作品进入复评&#xff0c;并经过网络投票和专家投票相结合的方…...

相机2:曝光三要素之ISO(感光度)

曝光是相机的感光元件与光线接触成像的过程&#xff0c;而曝光三要素分别指的是光圈大小&#xff0c;快门速度和感光度。这三个因素都可以控制曝光量&#xff0c;同时也分别有自己的特点。 什么是感光度&#xff1f; ISO又叫感光度&#xff0c;指的是相机感光元件&#xff08;…...

已解决java.util.IllegalFormatConversionException异常的正确解决方法,亲测有效!!!

已解决java.util.IllegalFormatConversionException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 示例报错代码&#xff1a; 解决思路 解决方法 检查和更正格式说明符 示例修正代码&#xff1a; 调整参数类型…...

OpenCV 库来捕获和处理视频输入和相似度测量(73)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV的周期性噪声去除滤波器(70) 下一篇 :使用 OpenCV 创建视频(74) ​ 目标 如今&#xff0c;拥有数字视频录制系统供您使用是很常见的。因此&#xff0c;您最终会遇到不再处理一批图像&#xf…...

了解TMS运输管理系统,实现物流高效运转

TMS运输管理系统&#xff08;Transportation Management System&#xff09;是一种集成物流和信息技术的解决方案&#xff0c;通过优化运输流程、实时跟踪货物信息和自动化管理操作&#xff0c;提高物流效率&#xff0c;降低运营成本&#xff0c;实现高效运输。 TMS运输管理系…...

数据库原理与应用实验三 嵌套查询

实验目的和要求 加深和掌握对嵌套查询的理解和应用 实验环境 Windows10 SQLServer 实验内容与过程 图书&#xff08;书号&#xff0c;书名&#xff0c;价格&#xff0c;出版社&#xff09; 读者&#xff08;卡号&#xff0c;姓名&#xff0c;年龄&#xff0c;所属单位&a…...

LeetCode 110.平衡二叉树(Java/C/Python3/Go实现含注释说明,Easy)

标签 树深度优先搜索递归 题目描述 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡的二叉树定义为&#xff1a; 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 原题&#xff1a;LeetCode 110.平衡二叉树 思路及…...

【SQL】ACID事务与隔离级别

数据库事务 数据库事务具有ACID这4个特性&#xff1a; A&#xff1a;Atomicity&#xff0c;原子性&#xff0c;将所有SQL作为原子工作单元执行&#xff0c;要么全部执行&#xff0c;要么全部不执行&#xff1b;C&#xff1a;Consistency&#xff0c;一致性&#xff0c;事务完…...

深度神经网络中的不确定性研究综述

A.单一确定性方法 对于确定性神经网络&#xff0c;参数是确定的&#xff0c;每次向前传递的重复都会产生相同的结果。对于不确定性量化的单一确定性网络方法&#xff0c;我们总结了在确定性网络中基于单一正向传递计算预测y *的不确定性的所有方法。在文献中&#xff0c;可以找…...

实用的Chrome浏览器命令

Google Chrome 是一款广泛使用的网络浏览器&#xff0c;它提供了许多实用的快捷键和命令&#xff0c;可以帮助用户更高效地浏览网页。以下是一些常用的 Chrome 浏览器命令&#xff1a; 1. 新标签页: Ctrl T (Windows/Linux) 或 Command T (Mac) 2. 关闭当前标签: Ctrl W 或…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...