掌握这些常见面试问题,为下一次Spring Boot面试做好准备!分享自“优锐课”。
在本文中,我们将讨论Spring Boot中的十大面试问题。在当今的就业市场中,这些问题有些棘手,而且趋势严重。
1) @SpringBootApplication批注在内部做什么?
根据Spring Boot的文档,@SpringBootApplication注释等效于使用@Configuration,@EnableAutoConfiguration和@ComponentScan及其默认属性。Spring Boot使开发人员可以使用单个注释而不是多个注释。但是,据我们所知,Spring提供了松散耦合的功能,我们可以根据项目需要将其用于每个单独的注释。
2) 如何不使用basePackages过滤器排除任何软件包?
你可以使用不同的方法来过滤任何软件包。但是Spring Boot提供了一个更棘手的选项来实现此目标,而无需进行组件扫描。你可以在使用注释@SpringBootApplication时使用exclude属性。请参见以下代码段:
@SpringBootApplication(exclude= {Employee.class})
public class FooAppConfiguration {}
3) 如何禁用特定的自动配置类?
如果找到不需要的任何特定自动配置类,则可以使用@EnableAutoConfiguration的exclude属性。
//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 Actuator? 它有什么优势?
这是Spring Boot中最常见的面试问题之一。根据Spring文档:
"Actuator是制造术语,是指用于移动或控制某些物体的机械设备。 Actuators可以通过很小的变化产生大量的运动。"
众所周知,Spring Boot提供了许多自动配置功能,可帮助开发人员快速开发生产组件。但是,如果你考虑调试以及如何调试,如果出现问题,我们总是需要分析日志并挖掘应用程序的数据流,以查看发生了什么。因此,Spring Actuator使你可以轻松访问这些功能。它提供了许多功能,即创建了哪些bean,控制器中的映射,CPU使用率等。然后可以将自动收集和审核运行状况和指标应用于你的应用程序。
它提供了一种非常简单的方法来访问少量可用于生产的REST端点,并从Web上获取各种信息。但是通过使用这些端点,你可以做很多事情来查看此处的端点文档。无需担心安全性。如果存在Spring Security,则默认情况下将使用Spring Security的内容协商策略保护这些端点的安全。否则,我们可以在RequestMatcher的帮助下配置自定义安全性。
5) 如何启用/禁用Actuator?
启用/禁用执行器很容易; 最简单的方法是启用功能以将依赖项(Maven / Gradle)添加到spring-boot-starter-actuator,即Starter。 如果你不希望启用actuator,则不要添加依赖项。
Maven依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
6) 什么是Spring Initializer?
这可能不是一个难题,但是面试官总是检查候选人的学科知识。 通常,你总是不能总是期待已准备好的问题。但是,这是几乎所有时间都提出的非常普遍的问题。
Spring Initializer是一个Web应用程序,它会生成一个Spring Boot项目,其中包含快速启动它所需的一切。与往常一样,我们需要一个良好的项目框架。它可以帮助你正确创建项目结构/骨架。 你可以在此处了解有关初始化程序的更多信息。
7) 什么是actuator停机?
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-jetty或spring-boot-starter-undertow用作每个项目的依赖项。
10) 我们可以在Spring Boot应用程序中禁用默认的Web服务器吗?
Spring的主要优点是提供灵活性以构建松耦合的应用程序。 Spring提供的功能可以在快速配置中禁用Web服务器。是的,我们可以使用application.properties来配置Web应用程序类型,即spring.main.web-application-type = none。
今天的分享就这些了,眼熟的小伙伴可以加Java学习资料交流qq群:907135806 一起学习Java。最近我也在努力往架构方向学习,特别感谢的是优锐课教育的老师对我的帮助,不但提供了系统丰富的资料,像JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git学习资料和视频课程都有,最重要的是老师提供的Java架构学习路线确实给我指明了学习路径,更有规划和效率,大家如果也有需要的话也可以加老师vx:ddmsiqi,共同进步~