Java面试题总结记录(6)—— SpringBoot篇

1、为什么要用SpringBoot


(1)独立运行: Spring Boot内嵌了servlet容器,例如Tomcat,Jetty等,无需打包成war部署到容器总,可以直接打成 jar 包就能独立运行。

(2)简化配置: 官方已经配置了快速配置包,一般为spring-boot-starter-xxx,减少了maven 的配置。

(3)自动配置: Spring Boot 能根据当前类路径下的类、jar包来自动配置bean。

(4)无代码生成和XML配置: Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,借助于注解进行配置。

(5)应用监控: Spring Boot 提供一系列端点可以监控服务及应用,做健康检测。


2、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

启动类最核心的注解: @SpringBootApplication

  • @SpringBootConfiguration: 组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration: 打开自动配置的功能,也可以关闭某个自动配置的选项,如@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class})
  • @ComponentScan: Spring组件扫描

3、运行Spring Boot有哪几种方式?

  • (1)打包用命令或者放到容器中运行
  • (2)用 Maven/Grade 插件运行
  • (3)直接执行启动类

4、如何理解 Spring Boot 中的 Starters?

(1)什么是Starters

Starters 是一个启动器,包含了一系列集成到应用里的依赖包,只需要使用spring-boot-starter-xxx启动器依赖即用。

(2)Starters命名规则

  • 官方:spring-boot-starter-xxx
  • 第三方:xxx-spring-boot-starter

(3)Starters分类

  • 应用启动器
    • spring-boot-starter: 包含自动配置、日志、YAML的支持
    • spring-boot-starter-web: 使用Spring MVC构建web工程,包含RESTful,默认使用Tomcat。
  • 生产启动器
    • spring-boot-starter-actuator: 提供生产环境特性,监控应用
  • 技术类启动器
    • spring-boot-starter-json: 提供对JSON的读写支持
    • spring-boot-starter-loggin: 默认的日志启动器,默认使用Logback

5、如何在Spring Boot启动的时候运行一些特定的代码?

如果想在Spring Boot启动时运行特定的代码,可以通过实现接口ApplicationRunner 或 CommanLineRunner,两者只提供run方法。

CommanLineRunner: 启动获取命令行参数


6、Spring Boot 需要独立的容器运行吗?

不需要,内置了Tomcat/jetty等容器。


7、Spring Boot中的监视器是什么?

spring-boot-starter-actuator 是spring启动框架中的重要功能之一。Spring Boot监视器可以帮助访问生产环境正在运行的应用程序的当前状态。


8、如何使用Spring Boot实现异常处理?

Spring 提供实现 ControllerAdvice 接口处理异常的非常有用的方法。


9、SpringBoot 实现热部署有哪几种方式?

  • Spring Loaded
  • Spring-boot-devtools

10、如何理解 Spring Boot 配置加载顺序?

  • properties文件
  • YAML/YML文件
  • 系统环境变量
  • 命令行参数

11、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

Spring Boot 的核心配置文件有两个:application 和 bootstrap 配置文件。

  • application: 主要用于Spring Boot 项目的自动化配置
  • bootstrap:
    • 主要用于 Spring Cloud Config 配置中心时,需要使用 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。
    • 一些静态属性
    • 一些加解密的场景

12、如何集成 Spring Boot 和 ActiveMQ?

引入 spring-boot-starter-activemq 依赖包即可。

你可能感兴趣的:(java,spring,boot,开发语言)