Spring Boot经典面试题及答案

news2025/1/17 8:57:22

一、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 {
      
          @Override
          public 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-alpine
      
      WORKDIR /app
      
      COPY target/myapp.jar app.jar
      
      ENTRYPOINT ["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.coloradmin.cn/o/2277936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

得物App利用技术赋能,打造潮流消费“新玩法”

如今,技术的力量正在以前所未有的方式重塑着我们的消费体验。从线上购物到虚拟现实,技术的角色越来越重要,它不仅是推动商业发展的引擎,更是满足年轻消费者多元化、个性化需求的关键。得物App作为一个年轻人喜爱的潮流消费平台&am…

语义检索效果差?深度学习rerank VS 统计rerank选哪个

前段时间我开发了一个用白话文搜索语义相近的古诗词的应用(详见:《朋友圈装腔指南:如何用向量数据库把大白话变成古诗词》),但是有时候搜索结果却不让人满意,排名靠前的结果和查询的语义没啥关系&#xff0…

数仓建模(三)建模三步走:需求分析、模型设计与数据加载

本文包含: 数据仓库的背景与重要性数据仓库建模的核心目标本文结构概览:需求分析、模型设计与数据加载 目录 第一部分:需求分析 1.1 需求分析的定义与目标 1.2 需求分析的步骤 1.2.1 业务需求收集 1.2.2 技术需求分析 1.2.3 成果输出…

【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展

我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 引言 在当今科技飞速发展的时代,制造业正经历着前所未有的变革,工业4.0的浪潮席卷而来。工业4.0旨在通过将…

MPLS原理及配置

赶时间可以只看实验部分 由来:90年代中期,互联网流量的快速增长。传统IP报文依赖路由器查询路由表转发,但由于硬件技术存在限制导致转发性能低,查表转发成为了网络数据转发的瓶颈。 因此,旨在提高路由器转发速度的MPL…

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意:小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务,如果没有就在插件管理中添加插件 2.腾讯位置服务…

【spring mvc】文件上传、下载

文件上传,存储至本地目录中 一、代码1、工具类(敏感后缀过滤)2、文件上传,存储至本地3、文件下载 二、效果演示1、上传1.1、postMan 请求1.2、上传效果 2、下载2.1、下载效果 一、代码 1、工具类(敏感后缀过滤&#x…

C语言预处理艺术:编译前的魔法之旅

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、预处理的作用与流程&#xf…

智汇云舟参编《城市轨道交通安全防范系统技术要求》国标正式发布

近日,根据国家标准化管理委员会官网,全国标准信息公共服务平台发布的公告,国家标准《城市轨道交通安全防范系统技术要求》(GB/T 26718-2024)已由全国城市轨道交通标准化技术委员会上报国家标准化管理委员会&#xff0c…

Linux(Centos7)安装Mysql/Redis/MinIO

安装Mysql 安装Redis 搜索Redis最先版本所在的在线安装yum库 查看以上两个组件是否是开机自启 安装MinIO 开源的对象存储服务,存储非结构化数据,兼容亚马逊S3协议。 minio --help #查询命令帮助minio --server --help #查询--server帮助minio serve…

Python从0到100(八十三):神经网络-使用残差网络RESNET识别手写数字

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…

【漏洞分析】DDOS攻防分析

0x00 UDP攻击实例 2013年12月30日,网游界发生了一起“追杀”事件。事件的主角是PhantmL0rd(这名字一看就是个玩家)和黑客组织DERP Trolling。 PhantomL0rd,人称“鬼王”,本名James Varga,某专业游戏小组的…

【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理

【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理 项目背景项目实现推理过程训练过程 项目展望写在最后项目下载链接 本文为原创文章,若需要转载,请注明出处。 原文地址:https://blog.csdn.net/qq_30270773/article…

下载文件,浏览器阻止不安全下载

背景: 在项目开发中,遇到需要下载文件的情况,文件类型可能是图片、excell表、pdf、zip等文件类型,但浏览器会阻止不安全的下载链接。 效果展示: 下载文件的两种方式: 一、根据接口的相对url,拼…

如何在谷歌浏览器中设置自定义安全警告

随着网络环境的日益复杂,浏览器的安全问题也愈发引人关注。谷歌浏览器作为一款广泛使用的浏览器,其自定义安全警告功能为用户提供了更加个性化和安全的浏览体验。本文将详细介绍如何在谷歌浏览器中设置自定义安全警告,帮助用户更好地保护自己…

AI 编程工具—Cursor进阶使用 阅读开源项目

AI 编程工具—Cursor进阶使用 阅读开源项目 首先我们打开一个最近很火的项目browser-use ,直接从github 上克隆即可 索引整个代码库 这里我们使用@Codebase 这个选项会索引这个代码库,然后我们再选上这个项目的README.md 文件开始提问 @Codebase @README.md 这个项目是用…

细说STM32F407单片机窗口看门狗WWDG的原理及使用方法

目录 一、窗口看门狗的工作原理 1、递减计数器 2、窗口值和比较器 3、看门狗的启动 4、提前唤醒中断 二、窗口看门狗的HAL驱动程序 1、窗口看门狗初始化 2.窗口看门狗刷新 3.EWI中断及其处理 三、不开启EWI的WWDG示例 1、示例功能 2、项目设置 (1&…

【Rust自学】12.6. 使用TDD(测试驱动开发)开发库功能

12.6.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print),是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步: 接收命令行参数读取…

利用rsync备份全网服务器数据

一、项目描述 某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了数据就会丢失,现在领导要求把数据做备份,这样Web服务器数据丢失在可以进行恢复,要求如下: 1、备份要求 每天晚上00点整在Web服…

Go基础之环境搭建

文章目录 1 Go 1.1 简介 1.1.1 定义1.1.2 特点用途 1.2 环境配置 1.2.1 下载安装1.2.2 环境配置 1.2.2.1 添加环境变量1.2.2.2 各个环境变量理解 1.2.3 验证环境变量 1.3 包管理工具 Go Modules 1.3.1 开启使用1.3.2 添加依赖包1.3.3 配置国内包源 1.3.3.1 通过 go env 配置1.…