Spring boot面试指南一
系列导航
- Java 内存管理面试指南一
- Java 基础面试指南一
- Java 基础面试指南二
- Java 基础面试指南三
- Java 基础面试指南四
- Java 线程面试指南一
- Java 线程面试指南二
- Redis 面试指南一
- Kafka 面试指南一
- Spring 面试指南一
- SpringBoot 面试指南一
- 微服务面试指南一
- 系统设计面试指南一
什么是 Spring Boot?
Spring Boot 是一个开源的轻量级框架,用于开发基于 Java 的应用程序。它构建于 Spring 框架之上,由 Pivotal 团队开发和维护。它主要用于 Web 和命令行应用程序。Spring Boot 会自动配置所有功能,您只需极少配置即可运行该应用程序。
Spring Framework 和 Spring Boot 有什么区别?
Spring 框架是用于构建应用程序的最广泛使用的 Java 框架。Spring 框架的主要特征是依赖注入(Dependency Injection)。通过允许我们开发松耦合应用程序,它可以使事情变得更简单。
Spring Boot 是 Spring 框架的一个模块/扩展。Spring Boot 的主要功能是自动配置(Auto Configuration)。它会根据需求自动配置类。Spring Boot 使得创建独立的、基于 Spring 的应用程序变得很容易。
主要区别在于:Spring 框架为开发应用程序使用了几种配置方式(如 XML、Java Config 等)。Spring Boot 允许使用预定义的类路径进行自动配置,简化了搭建过程。
Spring Boot 的功能是什么?
- 主要功能是自动配置(Auto Configuration)
- Spring Boot CLI(命令行界面)
- Starter POMs(启动器依赖)
- Actuator(监控与管理)
- Spring Initializr(项目初始化)
- 类型安全的配置(Type Safe Configuration)
- YAML 支持
- 基于微服务的架构支持
- 包括嵌入式 Tomcat 服务器
- 更好的 Spring Boot 安全性
- Admin 支持
- 日志文件管理(Logging Files)
- Spring 应用程序管理
Spring Boot 的最低系统要求是什么?
Java 版本要求
Spring Boot 2.x 将不再支持 Java 7 或更低版本,最低要求是 Java 8。
- Java 8+
- Spring Framework 5.2.4+
构建工具:
- Gradle 5.x 和 6.x 以上版本(也支持 4.4+)
- Maven 3.3 及以上
嵌入式 Servlet 容器:
- Servlet 3.x+ 兼容容器
- Tomcat 9.0 - Servlet v4.0+
- Jetty 9.4 - Servlet v3.1
- Undertow 2.0 - Servlet v4.0
什么是 Spring Boot 关键组件?
- Spring Boot Auto Configuration
- Spring Boot CLI
- Spring Boot Starter POMs
- Spring Boot Actuator
Spring Boot 模块的启动器有哪些依赖性?
Spring Boot 模块提供了许多启动器依赖项(Starters)。这里列出一些最常用的是:
- Data JPA Starter
- Test Starter
- Security Starter
- Web Starter
- Web Services Starter
- Mail Starter
- Thymeleaf Starter
什么是 Spring Boot Actuator?
Actuator 是 Spring Boot 的子项目。它提供了多个端点(Endpoints)来监视和管理您的应用程序。它通过提供内置端点来实现,但是您也可以构建自己的端点。还提供了访问生产就绪 REST 端点并从 Web 提取所有信息的简便方法。通过 Actuator,只需极少的配置即可轻松地将您的应用程序与任何外部系统集成。
如何启用 Spring Boot Actuator?
在现有的 pom.xml 文件中添加以下 Maven 依赖关系:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>什么是 Spring Boot CLI?
Spring Boot CLI 是用于 Spring Boot 应用程序的命令行界面工具。它使用 Groovy 脚本,是用于创建/管理应用程序的强大工具。
列出 Spring Boot CLI 命令?
runcommandtestcommandgrabcommandjarcommandwarcommandinstallcommanduninstallcommandinitcommandshellcommandhelpcommand
常见的 Spring Boot 注释是什么?
一些常见的 Spring Boot 注释是:
@SpringBootApplication
- @SpringBootConfiguration
- @ComponentScan
- @EnableAutoConfiguration
@ImportAutoConfiguration
@AutoConfigureBefore 或 @AutoConfigureAfter 或 @AutoConfigureOrder
条件注释
- @ConditionalOnBean 和 @ConditionalOnMissingBean
- @ConditionalOnNotWebApplication 和 @ConditionalOnWebApplication
- @ConditionalOnProperty
- @ConditionalOnResource
- @ConditionalOnExpression
- @ConditionalOnCloudPlatform
最常用的 Spring Actuator End Points 是什么?
- /beans: 返回应用程序中所有 Spring Bean 的完整列表
- /dump: 执行线程 Dump
- /env: 返回当前环境中的属性列表
- /health: 有关您的应用程序健康信息
- /trace: 跟踪日志
- /info: 显示任意应用程序信息
- /auditevents: 审计当前应用程序中的事件信息
- /mappings: 显示所有 @RequestMapping 路径的列表
- /metrics: 显示指标信息,例如:JVM, 系统 CPU, openfiles
Spring Boot 中 Relaxed Binding 的用途是什么?
Spring Boot 使用一些宽松的规则将环境属性绑定到 @ConfigurationProperties Bean,因此环境属性名称和 Bean 属性名称之间不需要完全匹配。
如何在 Spring Boot 中添加自定义 JS 代码?
在 Spring Boot 中,首先在 resources 文件夹下创建一个名为 static 的文件夹。您可以将静态内容放入该文件夹。
例如,路径 interviewgigapp.js 将对应资源 \static\js\interviewgigapp.js。
您可以使用以下代码引用它:
<script src="/js/interviewgigapp.js"></script>您能解释一下 Spring Boot 中的自动配置吗?
自动配置是一项重要功能,它可以基于类路径上的依赖关系(例如 jar、Bean、属性等)自动配置应用程序,而无需开发人员进行任何操作。Spring Boot 自动配置会尝试根据添加的 jar 依赖关系自动配置 Spring 应用程序。
您能解释一下如何注册自定义自动配置吗?
要注册自动配置类,我们必须在 META-INF/spring.factories 文件中的 EnableAutoConfiguration 键下列出其全限定名称:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.jsdiff.autoconfigure.CustomAutoConfiguration如果我们使用 Maven 构建项目,则应将该文件放置在 src/main/resources/META-INF 目录中,该目录最终将在打包阶段中位于正确位置。
嵌入式容器和 WAR 有什么区别?
您可以在命令提示符下将 JAR 文件作为可执行文件运行 Spring Boot 应用程序,无需设置外部 Web 服务器。但是要运行 WAR 文件,您需要设置一个具有 Servlet 容器的 Web 服务器,例如 Tomcat、Undertow 或 Jetty,然后在其中部署 WAR 文件。
为什么我们使用 Spring Boot Maven 插件?
它是 Spring Boot 团队构建的 Maven 插件,可简化应用程序的打包。它提供了一些命令,使您可以将代码打包为可执行文件或运行应用程序。该插件提供了使用 Spring Boot 应用程序的几个目标:
- spring-boot:repackage: 创建一个可自动执行的 jar 或 war 文件。它可以替换常规工件,或者可以使用单独的分类器附加到构建生命周期。
- spring-boot:run: 运行带有多个选项的 Spring Boot 应用程序,以将参数传递给它。
- spring-boot:start 和 spring-boot:stop: 将您的 Spring Boot 应用程序集成到集成测试阶段,以便该应用程序在测试前启动,测试后停止。
- spring-boot:build-info: 生成供 Actuator 使用的构建信息。
说明,如何在 Spring Boot 中启用 HTTP/2 支持?
将以下属性添加到 application.properties(或 .yml)文件中:
server.http2.enabled=true什么是 Spring Boot Initializr?
这是一个 Spring Boot 工具,可以非常轻松地引导 Boot 或 Spring 应用程序。
什么是 Spring Boot 启动器(Starters)?
启动器仅仅是 Gradle 或 Maven 模块,其唯一目的是提供所有必要的依赖关系以“入门”特定功能。Spring Boot Starters 使引导过程变得更加轻松和快捷。启动器为您带来了必需的 Maven 依赖关系以及一些预定义的配置位。
Spring Boot 的优点是什么?
- Spring Boot 的主要目的是降低代码行数(LOC)。
- 它提供了许多默认配置,有助于更快地引导 Spring 应用程序。
- 它主要用于创建独立应用程序(Standalone Applications)。
- 不需要 XML 配置。
- 易于创建 Spring 应用程序。
- 它带有嵌入式 Tomcat 或 Jetty 服务器。
- 它提供了很多插件。
- 它提供了 CLI 应用程序。
Spring Boot 依赖管理的用途是什么?
它用于管理依赖关系并自动配置,而无需您为任何依赖关系指定版本。当我们更新 Spring Boot 版本时,Spring 将以一致的方式自动升级所有依赖项。
Thymeleaf 的用途是什么?
Thymeleaf 是用于创建 Web 应用程序的基于 Java 的库之一。它提供了在 Web 应用程序中提供 XHTML/HTML5 的支持。它是 Spring 框架的强大模板处理引擎。
Spring Boot Devtools 有什么用?
它提供了非常有用的工具集合,极大地改善了开发体验。例如自动重启(Restart)等功能。
Spring Data JPA 的用途是什么?
Spring Data JPA 使实现基于 JPA 的存储库(Repository)和构建使用数据访问技术的 Spring 支持的应用程序变得容易。
Spring Boot 中的 H2 是什么?
H2 是完全用 Java 创建的开源 RDBMS(关系型数据库管理系统)。它可以嵌入在 Java 应用程序中,也可以在客户端服务器模式下运行。它是一个可以在内存中运行的轻量级数据库。
什么是 @SpringBootApplication 注释?
@SpringBootApplication 注释是以下三个 Spring 注释的组合,并且仅用一行代码即可提供全部三个功能。
- @Configuration 或 @SpringBootConfiguration (在版本 2 中): 指示类提供了 Spring Boot 应用程序配置。
- @ComponentScan: 它与 Spring XML 的
context:component-scan元素并行提供支持。 - @EnableAutoConfiguration: 用于启用 Spring Boot 的自动配置功能。
解释一下,如何使用 Spring Boot 控制日志记录?
我们可以通过在 application.properties 文件中指定日志级别来控制 Spring Boot 的日志记录。当该文件存在于类路径中时,Spring Boot 会加载该文件,并且可用于配置 Spring Boot 和应用程序代码。
Spring Boot 使用 Commons Logging 进行所有内部日志记录,您可以通过在 application.properties 文件中添加以下行来更改日志级别:
logging.level.org.springframework=debug
logging.level.com.demo=info为什么选择 Spring Boot?
- Spring Boot 是基于 Java 的应用程序框架。
- 它避免了编写大量样板代码、注释和 XML 配置。
- 为了减少开发、单元测试和集成测试的时间,提供了一些默认设置。
- 自动配置,无需手动配置。
- 易于使用,但功能强大的数据库事务管理功能。
- 为了提高生产力。
- 简化依赖管理。
- 它包括嵌入式 Servlet 容器。
- 它允许 Admin 支持。
您能解释一下如何启用调试日志记录吗?
- 首先,使用
--debug开关启动应用程序。 - 接下来,在
application.properties文件中设置logging.level.root=debug属性。 - 最后,在提供的日志配置文件中设置 Root Logger 的日志记录级别。
您能解释一下,如何运行和停止 Spring Boot 可执行 Jar?
打开 cmd 或 shell 窗口,并使用
java -jar,如下所示:java -jar myproject-0.0.1-SNAPSHOT.jar- 要停止使用
Ctrl + C。
说明: 本文内容主要基于 Spring Boot 2.x 版本编写。Spring Boot 3.x 版本已发布,最低要求 Java 17+,且部分依赖(如 Jakarta EE 替代 Java EE)和配置方式(如 spring.factories 变更为 org.springframework.boot.autoconfigure.AutoConfiguration.imports)有所调整。部分 Actuator 端点在 newer 版本中可能已被移除或更改。请参考官方文档获取最新信息。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/spring-boot-mian-shi-zhi-nan-yi.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。