1、为什么要有 Spring Boot

用来简化在使用 Spring 的过程中必须要做的一些配置

2、Spring Boot 的优点

  1. 开发基于 Spring 的应用程序很容易。
  2. Spring Boot 不需要编写大量样板代码、XML 配置和注释。
  3. Spring 引导应用程序可以很容易地与 Spring 生态系统集成,如 Spring JDBC、Spring Data、Spring Security 等。
  4. Spring Boot 遵循 「约定大于配置」,以减少开发工作(默认配置可以修改)。
  5. Spring Boot 应用程序提供嵌入式 HTTP 服务器,如 Tomcat 和 Jetty,可以轻松地开发和测试 web 应用程序。
  6. Spring Boot 提供命令行接口(CLI)工具,用于开发和测试 Spring Boot 应用程序

    3、什么是 Spring Boot Starters

启动器是一套方便的依赖描述符,它可以放在我们的程序中,可以一站式的获取所需要的 Spring 和相关技术。

4、Spring Boot 支持哪些内嵌 Servlet 容器

Tomcat、Jetty、Undertow

5、如何在 Spring Boot 应用程序中使用 Jetty 而不是 Tomcat?

在 pom 文件中的 web 模块排除 Tomcat 依赖,引入 Jetty 容器

6、介绍一下 @SpringBootApplication 注解

大概可以把 @SpringBootApplication 看作是 @Configuration@EnableAutoConfiguration@ComponentScan 注解的集合。

这三个注解的作用分别是:

  • @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制
  • @ComponentScan: 扫描被 @Component@Service@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
  • @Configuration:允许在上下文中注册额外的 bean 或导入其他配置类。

Spring Boot 的自动配置是如何实现的?

  1. SpringBoot在启动的时候从类路径下的 META-INF/spring.factories 中获取 EnableAutoConfiguration 指定的值
  2. 将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;
  3. 整个 J2EE 的整体解决方案和自动配置都在 springboot-autoconfigure 的 jar 包中;
  4. 它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件;
  5. 有了自动配置类 , 免去了我们手动编写配置文件的工作;

开发 RESTful Web 服务常用的注解有哪些?

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping

Spirng Boot 常用的两种配置文件

properties、yaml

什么是 YAML? YAML 配置的优势在哪里?

YAML 是一种比较方便阅读的数据序列化语言。它通常用于配置文件,与 properties 相比,YAML 文件就更加结构化,而且更少混淆。

Spring Boot 加载配置文件的优先级了解么?

  1. 命令行参数。(以—开头的参数,比如可以设置:—server.port对同一套代码设置不同的参数)
  2. 通过 System.getProperties() 获取的 Java 系统参数。
  3. 操作系统环境变量(这解释了为什么你通过 application.properties 设置的 user.name 取的是系统的用户名了)
  4. java:comp/env 得到的 JNDI 属性。
  5. 应用 Jar 文件之外的属性文件(系统的 application.properties 文件)
  6. 应用 Jar 文件内部的属性文件。
  7. 在应用配置 Java 类(包含 @Configuration 注解的 Java 类)中通过 @PropertySource 注解声明的属性文件。
  8. 通过 SpringApplication.setDefaultProperties 声明的默认属性。

Spring Boot 如何监控系统实际运行状况?

Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态。

Spring Boot 如何做请求参数校验?

@Pattern @Validated

如何使用 Spring Boot 实现全局异常处理?

实现一个ControlerAdvice类,来处理控制器类抛出的所有异常

Spring Boot 中如何实现定时任务?

使用 @Scheduled 注解就能很方便地创建一个定时任务