Spring Boot面试十大问题


在本文中,我们将讨论Spring Boot中的十大面试问题。在当今的就业市场中,这些问题有些棘手,而且趋势严重。

1)@SpringBootApplication注释在内部做什么?

按照Spring Boot导文档时, @SpringBootApplication注释相当于用@Configuration,@EnableAutoConfiguration和@ComponentScan使用默认的属性。Spring Boot使开发人员可以使用单个注释而不是多个注释。但是,据我们所知,Spring提供了松散耦合的功能,可根据项目需要将其用于每个单独的注释。

2)如何不使用basePackages 过滤器排除任何包装 ?

您可以使用不同的方法来过滤任何软件包。但是Spring Boot提供了一个更棘手的选项来实现此目标,而无需进行组件扫描。您可以exclude 在使用注释时使用属性 @SpringBootApplication。请参见以下代码段:

@SpringBootApplication(exclude= {Employee.class})
public class FooAppConfiguration {}

3)如何禁用特定的自动配置类?

如果找到不需要的任何特定自动配置类,则可以使用的 exclude 属性@EnableAutoConfiguration。

//By using "exclude"
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

另一方面,如果类不在类路径中,则可以使用excludeName 批注的属性,并指定完全限定的名称。

//By using "excludeName"
@EnableAutoConfiguration(excludeName={Foo.class})

另外,Spring Boot提供了使用该spring.autoconfigure.exclude 属性来控制要排除的自动配置类列表的工具。您可以添加到application.properties中。您可以添加多个用逗号分隔的类。

//By using property file
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

4)什么是spring执行器?它有什么优势?

这是Spring Boot中最常见的面试问题之一。根据Spring文档:

“执行器是一个制造术语,指的是用于移动或控制某些物体的机械设备。执行器可以通过很小的变化产生大量的运动。”

众所周知,Spring Boot提供了许多自动配置功能,可帮助开发人员快速开发生产组件。但是,如果您考虑调试以及如何调试,如果出现问题,我们总是需要分析日志并挖掘应用程序的数据流,以查看发生了什么。因此,弹簧执行器使您可以轻松访问这些功能。它提供了许多功能,例如,创建了哪些bean,控制器中的映射,CPU使用率等。然后可以将自动收集和审核运行状况以及指标应用于您的应用程序。

它提供了一种非常简单的方法来访问少量可用于生产的REST端点, 并从Web上获取各种信息。但是通过使用这些端点,您可以做很多事情来查看此处的端点文档。无需担心安全性。如果存在Spring Security,则默认情况下将使用Spring Security的内容协商策略来保护这些端点。否则,我们可以借助来配置自定义安全性RequestMatcher。

5)如何启用/禁用执行器?

启用/禁用执行器很容易;最简单的方法是使功能能够将依赖项(Maven / Gradle)添加到spring-boot-starter-actuator,即Starter。如果您不希望启用执行器,则不要添加依赖项。

Maven依赖项:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>

6)什么是Spring Initializer?

这可能不是一个难题,但是面试官总是检查候选人的主题知识。通常,您总是不能总是期待已准备好的问题。但是,这是几乎所有时间都提出的非常普遍的问题。

Spring Initializer是一个Web应用程序,它将生成一个Spring Boot项目,其中包含快速启动它所需的一切。与往常一样,我们需要一个良好的项目框架。它可以帮助您正确创建项目结构/骨架。您可以在此处了解有关Initializer的更多信息 。

7)什么是执行器停机?

Shutdown是允许正常关闭应用程序的终结点。默认情况下不启用此功能。您可以通过在application.properties文件中使用management.endpoint.shutdown.enabled = true来启用此功能。但是,如果您使用此工具,请当心。

8)是否可以在Spring Boot中更改Embedded Tomcat服务器的端口?

是的,可以更改端口。您可以使用application.properties文件更改端口。但是您需要提及“ server.port ” (即server.port = 8081)。确保项目类路径中有application.properties;REST Spring框架将负责其余的工作。如果提到server.port = 0,它将自动分配任何可用端口。

9)我们可以在Spring Boot中覆盖或替换Embedded Tomcat服务器吗?

是的,我们可以使用Starter依赖项将Embedded Tomcat替换为任何其他服务器。您可以 根据需要为每个项目使用 spring-boot-starter-jettyspring-boot-starter-undertow作为依赖项。

10)我们可以在Spring Boot应用程序中禁用默认的Web服务器吗?

Spring的主要优点是提供灵活性来构建松耦合的应用程序。Spring提供的功能可以在快速配置中禁用Web服务器。是的,我们可以使用application.properties来配置Web应用程序类型,即 pring.main.web-application-type=none

一切顺利!


原文链接:https://blog.csdn.net/Beibnjin/article/details/113827586?utm_medium=distribute.pc_category.none-task-blog-hot-1.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-1.nonecase&request_id=