1.什么是spring boot?

  1. 建立现有的spring 框架之上,提供快速使用spring框架的解决方案,基于约定优于配置;


2.spring boot的优点?

  1. 实现自动装配;嵌入服务器,增强spring的功能;
  2. 减少开发,测试时间和努力;
  3. 起步依赖避免大量 的Maven导入和各种依赖版本的冲突问题;
  4. 通过提供默认值快读开始开发;

3.SpringBoot的配置文件

  1. springboot配置文件有三种格式:properties和yaml、yml;默认的配置文件是properties
  2. 区别:
    1. properties是键值对形式key和value用 - 区分,如:server.port=8080;
    2. yml的树状层级结构,用空格区分server: port: 80801;
    3. 优先级比较:properties > yml > yaml;yml特点:大小写敏感;数据值前面必须有空格作为分隔符;使用缩进表示层级;缩进不能用tab键,只容许使用空格,可能会导致层级混乱;#表示注解

4.profile配置项目环境

  1. profile配置环境的激活方式
    1. 在配置文件中是通过spring.profiles.active 节点进行配置的,
    2. 在虚拟机中通过在VMoptions指定-Dspring.profiles.active,
    3. 在命令行通过java-jar xxx.jar —spring.profiles.active=dev来指定;
  2. 开发环境有:
    1. dev-开发环境
    2. test-测试环境
    3. pro-生产环境;
  3. profile配置方式
    1. 多profile文件方式:提供多个配置文件,每个代表一种环境
      1. application-dev.properties/yml 表示开发环境配置文件
      2. application-test.properties/yml 表示测试环境配置文件
      3. application-pro.properties/yml 表示生产环境配置文件
    2. 单配置文件多文档配置方式
      1. 在yml中使用 —-分隔不同的环境配置,实现单配置文件多文档配置方式


5.SpringBoot配置文件加载顺序

  1. springboot程序启动时,会从以下位置加载配置文件(优先级顺序排列)
    1. file:/config/:当前项目下的config目录下
    2. file:/:当前项目下的根目录下
    3. classpath:/config/:classpath的/config目录下
    4. classpath:/:classpath的根目录下


6.springboot自动配置的原理

  1. SpringBoot关于自动配置的源码在spring‐boot‐autoconfigure‐x.x.x.x.jar中;
  2. @SpringBootApplication是一个复合注解,在@SpringBootApplication中有一个注解 @EnableAutoConfiguration,翻译成人话就是开启自动配置;这个注解也是一个复合注解,其中的关键功能@Import(AutoConfigurationImportSelector.class)提供,其导入的AutoConfigurationImportSelector类的selectImports()方法通SpringFactoriesLoader.loadFactoryNames()扫描所有具有META-INF/spring.factories的jar包。
  3. 总结:Spring Boot启动的时候会通过@EnableAutoConfiguration注解找到META‐INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的


7.如何使用SpringBoot实现异常处理?

  1. Spring提 供 了 一 种 使 用ControllerAdvice处 理 异 常 的 非 常 有 用 的 方 法 。我 们 通过 实 现 一 个ControlerAdvice类 , 来 处 理 控 制 器 类 抛 出 的 所 有 异 常


8.什么是Swagger?你用SpringBoot实现了它吗?

  1. Swagger广 泛 用 于 可 视 化API,使 用SwaggerUI为 前 端 开 发 人 员 提 供 在 线 沙 箱。Swagger是 用 于 生 成RESTfulWeb服 务 的 可 视 化 表 示 的 工 具,规 范 和 完 整 框 架 实现。它 使 文 档 能 够 以 与 服 务 器 相 同 的 速 度 更 新。当 通 过Swagger正 确 定 义 时,消费 者 可 以 使 用 最 少 量 的 实 现 逻 辑 来 理 解 远 程 服 务 并 与 其 进 行 交 互。因 此,Swagger消 除 了 调 用 服 务 时 的 猜 测 。


9.什么是WebSockets?

  1. WebSocket是 一 种 计 算 机 通 信 协 议 , 通 过 单 个TCP连 接 提 供 全 双 工 通 信 信 道
  2. 双向性:使 用WebSocket客 户 端 或 服 务 器 可 以 发 起 消 息 发 送
  3. 全双工:客 户 端 和 服 务 器 通 信 是 相 互 独 立 的 。
  4. 单个tcp连接:-初 始 连 接 使 用HTTP,然 后 将 此 连 接 升 级 到 基 于 套 接 字 的 连 接。然 后 这 个 单 一 连 接 用 于 所 有 未 来 的 通 信