SpringBoot面试题整理(二)

209 阅读2分钟

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」。

1.描述Spring-boot-maven-plugin插件作用

spring-boot-maven-plugin 插件以Maven的方式为Springboot应用提供支持,能够将Springboot应用打包为可执行的jar或war文件,进行相应部署后即可启动Springboot应用。

2.SpringBoot读取配置文件的方式,分别是什么?

1、@Value 注解

2、@ConfigurationProperties 和 @EnableConfigurationProperties(@Compent)

3、@PropertySource

4、Environment

5、PropertySourcesPlaceholderConfigurer

6、自己写一个静态读取的配置文件的工具类(包括 jar 包外的配置文件,与SpringBoot读取的配置文件一致)

3.SpringBoot加载配置文件的顺序?如果配置文件有相同的配置属性,该如何处理?

  • @TestPropertySource 注解
  • 命令行参数
  • Java系统属性(System.getProperties())
  • 操作系统环境变量
  • 只有在random.*里包含的属性会产生一个RandomValuePropertySource
  • 在打包的jar外的应用程序配置文件(application.properties,包含YAML和profile变量)
  • 在打包的jar内的应用程序配置文件(application.properties,包含YAML和profile变量)
  • 在@Configuration类上的@PropertySource注解
  • 默认属性(使用SpringApplication.setDefaultProperties指定)

当无spring.profiles.active 时, 先读取到的属性会先生效。 当有spring.profiles.active 时,配置了相同属性时是profiles上的配置生效。例如:file:./config/上的yml配置了端口 8080 但是存在 spring.profiles.active属性 dev;然后我们在dev上也配置来一个端口 8081.此时生效的为8081.

4.SpringBoot如何自定义异常?描述相关注解

1、自定义异常处理类,使用@ControllerAdvice或者@RestControllerAdvice如果全部异常处理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,这样在方法上就可以不需要添加 @ResponseBody拦

2、类中方法使用@ExceptionHandler(value = Exception.class)来捕获指定异常

3、对捕获到的异常进行处理

5.描述HTTP常用状态码

200 请求成功

400 客户端方面的问题,服务器无法识别请求

405 请求中所指定的方法不被允许

404 请求的资源(网页等)不存在

500 内部服务器错误

6. 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。

首先,如果在虚拟机上部署应用程序所需步骤:

第一步: 安装 Java

第二部: 安装 Web 或者是应用程序的服务器(Tomat/Wbesphere/Weblogic 等等)

第三部: 部署应用程序 war 包

嵌入式服务器的起源思想:只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了,当我们创建一个可以部署的应用程序的时候,我们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。