Spring Boot经典面试题及答案

一、Spring Boot基础知识

  1. 什么是Spring Boot?

    答案

    Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案。它简化了Spring应用程序的初始化和开发过程,通过“约定大于配置”的原则,减少了手动配置的繁琐工作,使开发者能够更快速地构建独立、可运行的、生产级别的Spring应用程序。

  2. Spring Boot有哪些特点?

    答案

    • 独立运行:Spring Boot应用程序可以作为一个独立的JAR包运行,无需部署到外部容器中。
    • 自动配置:Spring Boot根据项目中的依赖关系自动配置Bean,减少了手动配置的繁琐工作。
    • 简化开发:Spring Boot提供了大量内置的Starter模块,简化了第三方库的引入和管理。
    • 嵌入式Web服务器:Spring Boot支持内嵌的Tomcat、Jetty等Web服务器,方便开发和调试。
    • 丰富的插件支持:Spring Boot可以与各种第三方库和框架集成,满足各种业务需求。
    • 监控和度量:Spring Boot提供了内置的监控和度量功能,方便对应用程序的性能进行实时监控。
  3. Spring Boot的核心注解是什么?它主要由哪几个注解组成?

    答案

    Spring Boot的核心注解是@SpringBootApplication,它主要由以下三个注解组成:

    • @SpringBootConfiguration:组合了@Configuration注解,表明该类是一个配置类。
    • @EnableAutoConfiguration:打开自动配置的功能,Spring Boot会根据项目中的依赖关系自动配置Bean。
    • @ComponentScan:指定Spring组件扫描的包,默认扫描配置类所在的包及其子包。

二、Spring Boot开发与实践

  1. 如何在Spring Boot中创建和运行一个项目?

    答案

    • 创建项目:可以使用Spring Initializr(https://start.spring.io/)在线生成Spring Boot项目,选择所需的依赖项、项目类型和打包方式,然后生成并下载项目。
    • 运行项目:在项目根目录下,执行./mvnw spring-boot:run命令,或者在IDE中运行包含main方法的类。
  2. Spring Boot如何读取配置文件?

    答案

    Spring Boot支持通过多种方式读取配置文件:

    • application.properties/application.yml:这是Spring Boot默认的配置文件,位于src/main/resources目录下。
    • @PropertySource:通过注解方式指定自定义配置文件的位置。
    • @Value:直接读取配置文件中的属性值,注入到Bean中。
    • @Environment:注入Environment对象,通过该对象获取配置文件中的属性值。
    • @ConfigurationProperties:将配置文件中的属性绑定到一个Java Bean上,实现类型安全的配置。
  3. Spring Boot如何实现自动配置?

    答案

    Spring Boot的自动配置是通过注解@EnableAutoConfiguration实现的。在启动类上添加该注解后,Spring Boot会在启动时自动扫描项目中的依赖,并根据这些依赖自动配置相应的Bean。

    自动配置的核心原理是:

    • 读取spring.factories文件:Spring Boot在启动时,会扫描所有依赖的JAR包,查找其中的META-INF/spring.factories文件。
    • 加载自动配置类spring.factories文件中配置了自动配置类的全限定名,Spring Boot会加载这些自动配置类。
    • 条件化配置:自动配置类中使用@Conditional系列注解(如@ConditionalOnClass@ConditionalOnBean等)来判断当前环境是否满足自动配置的条件。
    • 注册Bean:如果条件满足,自动配置类会将Bean注册到Spring容器中。
  4. Spring Boot如何实现热部署?

    答案

    Spring Boot实现热部署主要有两种方式:

    • Spring Loaded:一个JVM代理,能够在运行时修改Java类的字节码,从而实现热部署。但这种方式已经较少使用。
    • Spring Boot DevTools:Spring Boot提供的一个开发工具,能够在代码修改后自动重启应用程序,从而实现热部署。使用方式是在项目的pom.xml文件中添加Spring Boot DevTools的依赖。

三、Spring Boot高级应用

  1. 什么是Spring Boot Actuator?它有哪些功能?

    答案

    Spring Boot Actuator是Spring Boot提供的一个用于监控和管理应用程序的模块。它提供了一系列端点(Endpoint),可以通过HTTP或JMX等方式访问,用于获取应用程序的运行状态、健康检查、度量信息等。

    主要功能包括:

    • 应用健康检查:通过/health端点检查应用程序的健康状态。
    • 度量信息:通过/metrics端点获取应用程序的各种度量信息,如内存使用情况、线程池信息等。
    • 环境信息:通过/env端点获取应用程序的环境配置信息。
    • 日志级别管理:通过/logfile端点查看日志文件,通过/loggers端点动态调整日志级别。
  2. Spring Boot如何实现单点登录(SSO)?

    答案

    Spring Boot实现单点登录(SSO)通常使用Spring Security和Spring Session等组件。具体步骤如下:

    • 引入依赖:在pom.xml文件中添加Spring Security和Spring Session的依赖。
    • 配置数据源:配置数据库连接信息,用于存储用户登录信息和会话信息。
    • 创建认证服务器:使用Spring Security创建一个认证服务器,处理用户的登录请求和验证用户信息。
    • 创建授权服务器:使用Spring Security创建一个授权服务器,根据用户的角色和权限进行访问控制。
    • 集成认证和授权服务器:将认证服务器和授权服务器集成在一起,实现单点登录的功能。
  3. Spring Boot如何处理跨域问题?

    答案

    Spring Boot处理跨域问题通常使用Spring MVC提供的@CrossOrigin注解,或者在配置类中实现WebMvcConfigurer接口,并重写addCorsMappings方法。

    具体步骤如下:

    • 使用@CrossOrigin注解:在控制器类或者控制器方法上使用@CrossOrigin注解,指定允许访问的域、请求方法等。

    • 实现WebMvcConfigurer接口

      @Configuration
      public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("http://example.com").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").allowedHeaders("*").allowCredentials(true);}
      }
      

四、Spring Boot与其他技术

  1. Spring Boot与Spring Cloud的关系是什么?

    答案

    Spring Boot是Spring的快速开发框架,主要用于简化Spring应用的开发和部署过程。而Spring Cloud是Spring提供的微服务解决方案,它基于Spring Boot,提供了一整套实现微服务的工具,如服务发现、配置管理、服务网关、熔断器等。

    简单来说,Spring Boot是Spring Cloud的基础,Spring Cloud依赖于Spring Boot。

  2. Spring Boot如何与Docker集成?

    答案

    Spring Boot与Docker的集成可以极大地简化应用的部署和管理。具体步骤如下:

    • 编写Dockerfile:在项目根目录下编写一个Dockerfile,用于描述如何构建Docker镜像。

      FROM openjdk:17-jdk-alpineWORKDIR /appCOPY target/myapp.jar app.jarENTRYPOINT ["java", "-jar", "app.jar"]
      
    • 构建Docker镜像:在项目根目录下执行docker build -t myapp:latest .命令,构建Docker镜像。

    • 运行Docker容器:执行docker run -p 8080:8080 myapp:latest命令,运行Docker容器。

  3. Spring Boot如何与数据库集成?

    答案

    Spring Boot与数据库集成通常使用Spring Data JPA或MyBatis等持久层框架。以Spring Data JPA为例,具体步骤如下:

    • 引入依赖:在pom.xml文件中添加Spring Data JPA和数据库驱动的依赖。
    • 配置数据源:在application.propertiesapplication.yml文件中配置数据库连接信息。
    • 创建实体类:使用JPA注解定义实体类,映射到数据库表。
    • 创建Repository接口:继承JpaRepository接口,定义数据访问方法。
    • 使用Service层:在Service层中调用Repository接口的方法,实现业务逻辑。

五、常见问题与解决方案

  1. Spring Boot项目启动时报错“Failed to configure a DataSource”怎么办?

    答案

    这个错误通常是因为Spring Boot在自动配置时未能找到数据源的配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3069.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (二、首页轮播图懒加载的实现)

在开发一款影视APP时,首页的轮播图是一个非常重要的部分。它不仅能够吸引用户的注意力,还能有效地推广重点内容。为了提升应用的性能和用户体验,可以实现轮播图的懒加载功能。本文将详细介绍如何在HarmonyOS NEXT应用开发中实现这一功能。 1.…

GraphRAG如何使用ollama提供的llm model 和Embedding model服务构建本地知识库

使用GraphRAG踩坑无数 在GraphRAG的使用过程中将需要踩的坑都踩了一遍(不得不吐槽下,官方代码有很多遗留问题,他们自己也承认工作重心在算法的优化而不是各种模型和框架的兼容性适配性上),经过了大量的查阅各种资料以…

Jupyter notebook中运行dos指令运行方法

Jupyter notebook中运行dos指令运行方法 目录 Jupyter notebook中运行dos指令运行方法一、DOS(磁盘操作系统)指令介绍1.1 DOS介绍1.2 DOS指令1.2.1 DIR - 显示当前目录下的文件和子目录列表。1.2.2 CD 或 CHDIR - 改变当前目录1.2.3 使用 CD .. 可以返回上一级目录1…

Oracle报错ORA-01078、LRM-00109

虚拟机异常关机后,rac数据库备机无法启动数据库,报错如下 解决方法: 找到如下路径文件 执行: cp init.ora.016202516818 /u01/app/oracle/product/19.3.0/db/dbs/ mv init.ora.016202516818 initplm2.ora 再次进入命令行sqlpl…

AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%

“AAPM: Large Language Model Agent-based Asset Pricing Models” 论文地址:https://arxiv.org/pdf/2409.17266v1 Github地址:https://github.com/chengjunyan1/AAPM 摘要 这篇文章介绍了一种利用LLM代理的资产定价模型(AAPM)…

大疆发布可折叠航拍无人机,仅重249g,支持 4800 万像素拍摄

在以往的无人机使用经历中,携带不便一直是个让人头疼不已的问题。那些体积硕大的无人机,每次出行都像是一场艰难的搬运,塞进车里都费劲,更别提轻松地穿梭在城市街头或是户外探险中了。但就在大家对这些问题习以为常、感到无奈时&a…

无公网IP 实现外网访问本地 Docker 部署 Navidrome

Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用,它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…

从 SQL 语句到数据库操作

1. SQL 语句分类 数据定义语言 DDL : 用于定义或修改数据库中的结构,如:创建、修改、删除数据库对象。create、drop alter 数据操作语言 DML : 用于添加、删除、更新数据库中的数据。select、insert alter、drop 数据控制语言 D…

leetcode hot100(2)

11.200.岛屿数量 本题是图论中经典的连通分量问题,可以用bfs/dfs解决。 class Solution {int[][] directions new int[][]{{-1,0},{0,-1},{1,0},{0,1}};public int numIslands(char[][] grid) {boolean visited[][] new boolean[grid.length][grid[0].length];i…

Kafka权威指南(第2版)读书笔记

目录 Kafka生产者——向Kafka写入数据生产者概览创建Kafka生产者bootstrap.serverskey.serializervalue.serializer 发送消息到Kafka同步发送消息异步发送消息 生产者配置client.idacks消息传递时间max.block.msdelivery.timeout.msrequest.timeout.msretries 和retry.backoff.…

虚拟拨号技术(GOIP|VOIP)【基于IP的语音传输转换给不法分子的境外来电披上一层外衣】: Voice over Internet Protocol

文章目录 引言I 虚拟拨号技术(GOIP|VOIP)原理特性:隐蔽性和欺骗性II “GOIP”设备原理主要功能III 基于IP的语音传输 “VOIP” (Voice over Internet Protocol)IV “断卡行动”“断卡行动”目的电信运营商为打击电诈的工作V 知识扩展虚拟号保护隐私虚拟运营商被用于拨打骚扰…

MySQL 事务

目录 一、什么是事务 二、事务的特性 三、事务使用案例 四、事务并发问题 五、设置事务的隔离级别(解决读的问题) 一、什么是事务 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除…

基于Oracle与PyQt6的电子病历多模态大模型图形化查询系统编程构建

一、引言 1.1 研究背景阐述 在当今数字化时代,医疗行业正经历着深刻的变革,数字化转型的需求日益迫切。电子病历(EMR)作为医疗信息化的核心,其管理的高效性和数据利用的深度对于提升医疗服务质量、优化临床决策以及推动医学研究具有至关重要的意义。传统的电子病历管理系…

强化学习-蒙特卡洛方法

强化学习-数学理论 强化学习-基本概念强化学习-贝尔曼公式强化学习-贝尔曼最优公式强化学习-值迭代与策略迭代强化学习-蒙特卡洛方法 文章目录 强化学习-数学理论一、蒙特卡洛方法理论(Monte Carlo, MC)二、MC Basic2.1 算法拆解2.2 MC Basic算法 三、MC Exploring Starts3.1 …

Harmony面试模版

1. 自我介绍 看表达能力、沟通能力 面试记录: 2. 进一步挖掘 2.1. 现状 目前是在职还是离职,如果离职,从上一家公司离职的原因 2.2. 项目经验 如果自我介绍工作项目经验讲的不够清楚,可以根据简历上的信息再进一步了解 面试记…

eBay账号安全攻略:巧妙应对风险

在跨境电商的浪潮中,eBay宛如一座璀璨的灯塔,照亮了无数买卖双方的交易之路。但别忘了,网络安全的阴霾也在悄然蔓延,让eBay账号时刻处于黑客攻击、数据泄露、钓鱼诈骗等风险的阴影之下。别担心,今天就来为你支支招&…

浅谈云计算19 | OpenStack管理模块 (上)

OpenStack管理模块(上) 一、操作界面管理架构二、认证管理2.1 定义与作用2.2 认证原理与流程2.2.1 认证机制原理2.2.2 用户认证流程 三、镜像管理3.1 定义与功能3.2 镜像服务架构3.3 工作原理与流程3.3.1 镜像存储原理3.3.2 镜像检索流程 四、计算管理4.…

【Uniapp-Vue3】uni-api交互反馈showToast的使用方法

如果想要显示弹窗,就可以使用showToast去显示弹窗。 uni.showToast({ title:"显示内容", icon:"标志样式" }) 其中,title只能显示7个字符的内容,如果想要显示全,只能不设置icon。 icon默认是success&#xf…

LabVIEW与WPS文件格式的兼容性

LabVIEW 本身并不原生支持将文件直接保存为 WPS 格式(如 WPS 文档或表格)。然而,可以通过几种间接的方式实现这一目标,确保您能将 LabVIEW 中的数据或报告转换为 WPS 可兼容的格式。以下是几种常见的解决方案: ​ 导出…

如何异地远程访问本地部署的Web-Check实现团队远程检测与维护本地站点

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 在日常开发和维护过程中,确保Web应用稳定运行是至关重要的。…