- 1、什么是 Spring Boot?
- 2、 Spring Boot 有哪些优点?
- 3、什么是 JavaConfig?
- 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
- 5、 Spring Boot 中的监视器是什么?
- 6、如何在 Spring Boot 中禁用 Actuator 端点安全性?
- 7、如何在自定义端口上运行 Spring Boot 应用程序?
- 8、什么是 YAML?
- 9、如何实现 Spring Boot 应用程序的安全性?
- 10、如何集成 Spring Boot 和 ActiveMQ?
- 11、如何使用 Spring Boot 实现分页和排序?
- 12、什么是 Swagger?你用 Spring Boot 实现了它吗?
- 13、什么是 Spring Profiles?
- 14、什么是 Spring Batch?
- 15、什么是 FreeMarker 模板?
- 16、如何使用 Spring Boot 实现异常处理?
- 17、您使用了哪些 starter maven 依赖项?
- 18、什么是 CSRF 攻击?
- 19、什么是 WebSockets?
- 20、什么是 AOP?
- 21、什么是 Apache Kafka?
- 22、我们如何监视所有 Spring Boot 微服务?
1、什么是 Spring Boot?
多 年 来, 随 着 新 功 能 的 增 加, spring 变 得 越 来 越 复 杂 。 只 需 访 问 https://spring.io/projects 页 面, 我 们 就 会 看 到 可 以 在 我 们 的 应 用 程 序 中 使 用 的 所 有 Spring 项 目 的 不 同 功 能 。 如 果 必 须 启 动 一 个 新 的 Spring 项 目, 我 们 必 须 添 加 构 建 路 径 或 添 加 Maven 依 赖 关 系, 配 置 应 用 程 序 服 务 器, 添 加 spring 配 置 。 因 此, 开 始 一 个 新 的 spring 项 目 需 要 很 多 努 力, 因 为 我 们 现 在 必 须 从 头 开 始 做 所 有 事 情 。
Spring Boot 是 解 决 这 个 问 题 的 方 法 。 Spring Boot 已 经 建 立 在 现 有 spring 框 架 之 上 。 使 用 spring 启 动, 我 们 避 免 了 之 前 我 们 必 须 做 的 所 有 样 板 代 码 和 配 置 。 因 此, Spring Boot 可 以 帮 助 我 们 以 最 少 的 工 作 量, 更 加 健 壮 地 使 用 现 有 的 Spring 功 能 。
2、 Spring Boot 有哪些优点?
Spring Boot 的 优 点 有:
1 、 减 少 开 发, 测 试 时 间 和 努 力 。
2、 使 用 JavaConfig 有 助 于 避 免 使 用 XML。
3、 避 免 大 量 的 Maven 导 入 和 各 种 版 本 冲 突 。
4 、 提 供 意 见 发 展 方 法 。
5 、 通 过 提 供 默 认 值 快 速 开 始 开 发 。
6、 没 有 单 独 的 Web 服 务 器 需 要 。 这 意 味 着 你 不 再 需 要 启 动 Tomcat, Glassfish 或 其 他 任 何 东 西 。
7 、 需 要 更 少 的 配 置 因 为 没 有 web.xml 文 件 。 只 需 添 加 用 @ Configuration 注 释 的 类, 然 后 添 加 用 @Bean 注 释 的 方 法, Spring 将 自 动 加 载 对 象 并 像 以 前 一 样 对 其 进 行 管 理 。 您 甚 至 可 以 将 @Autowired 添 加 到 bean 方 法 中, 以 使 Spring 自 动 装 入 需 要 的 依 赖 关 系 中 。
8 、 基 于 环 境 的 配 置 使 用 这 些 属 性, 您 可 以 将 您 正 在 使 用 的 环 境 传 递 到 应 用 程 序: -Dspring.profiles.active = {enviornment} 。 在 加 载 主 应 用 程 序 属 性 文 件 后,Spring 将 在 (application{environment} .properties) 中 加 载 后 续 的 应 用 程 序 属 性 文 件 。
3、什么是 JavaConfig?
Spring JavaConfig 是 Spring 社 区 的 产 品, 它 提 供 了 配 置 Spring IoC 容 器 的 纯 Java 方 法 。 因 此 它 有 助 于 避 免 使 用 XML 配 置 。 使 用 JavaConfig 的 优 点 在 于:
1、 面 向 对 象 的 配 置 。 由 于 配 置 被 定 义 为 JavaConfig 中 的 类, 因 此 用 户 可 以 充 分 利 用 Java 中 的 面 向 对 象 功 能 。 一 个 配 置 类 可 以 继 承 另 一 个, 重 写 它 的 @Bean 方 法 等 。
2 、 减 少 或 消 除 XML 配 置 。 基 于 依 赖 注 入 原 则 的 外 化 配 置 的 好 处 已 被 证 明 。 但 是, 许 多 开 发 人 员 不 希 望 在 XML 和 Java 之 间 来 回 切 换 。 JavaConfig 为 开 发 人 员 提 供 了 一 种 纯 Java 方 法 来 配 置 与 XML 配 置 概 念 相 似 的 Spring 容 器 。从 技 术 角 度 来 讲, 只 使 用 JavaConfig 配 置 类 来 配 置 容 器 是 可 行 的, 但 实 际 上 很 多 人 认 为 将 JavaConfig 与 XML 混 合 匹 配 是 理 想 的 。
3 、 类 型 安 全 和 重 构 友 好 。 JavaConfig 提 供 了 一 种 类 型 安 全 的 方 法 来 配 置 Spring 容 器 。 由 于 Java 5.0 对 泛 型 的 支 持, 现 在 可 以 按 类 型 而 不 是 按 名 称 检 索 bean, 不 需 要 任 何 强 制 转 换 或 基 于 字 符 串 的 查 找 。
4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
这 可 以 使 用 DEV 工 具 来 实 现 。 通 过 这 种 依 赖 关 系, 您 可 以 节 省 任 何 更 改, 嵌 入 式 tomcat 将 重 新 启 动 。 Spring Boot 有 一 个 开 发 工 具 (DevTools) 模 块, 它 有 助 于 提 高 开 发 人 员 的 生 产 力 。 Java 开 发 人 员 面 临 的 一 个 主 要 挑 战 是 将 文 件 更 改 自 动 部 署 到 服 务 器 并 自 动 重 启 服 务 器 。 开 发 人 员 可 以 重 新 加 载 Spring Boot 上 的 更 改 , 而 无 需 重 新 启 动 服 务 器 。这 将 消 除 每 次 手 动 部 署 更 改 的 需 要 。Spring Boot 在 发 布 它 的 第 一 个 版 本 时 没 有 这 个 功 能 。 这 是 开 发 人 员 最 需 要 的 功 能 。 DevTools 模 块 完 全 满 足 开 发 人 员 的 需 求 。该 模 块 将 在 生 产 环 境 中 被 禁 用 。 它 还 提 供 H2 数 据 库 控 制 台 以 更 好 地 测 试 应 用 程 序 。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
5、 Spring Boot 中的监视器是什么?
Spring boot actuator 是 spring 启 动 框 架 中 的 重 要 功 能 之 一 。 Spring boot 监 视 器 可 帮 助 您 访 问 生 产 环 境 中 正 在 运 行 的 应 用 程 序 的 当 前 状 态 。 有 几 个 指 标 必 须 在 生 产 环 境 中 进 行 检 查 和 监 控 。 即 使 一 些 外 部 应 用 程 序 可 能 正 在 使 用 这 些 服 务 来 向 相 关 人 员 触 发 警 报 消 息 。 监 视 器 模 块 公 开 了 一 组 可 直 接 作 为 HTTP URL 访 问 的 REST 端 点 来 检 查 状 态 。
6、如何在 Spring Boot 中禁用 Actuator 端点安全性?
默 认 情 况 下, 所 有 敏 感 的 HTTP 端 点 都 是 安 全 的, 只 有 具 有 ACTUATOR 角 色 的 用 户 才 能 访 问 它 们 。安 全 性 是 使 用 标 准 的 HttpServletRequest.isUserInRole 方 法 实 施 的 。 我 们 可 以 使 用
来 禁 用 安 全 性 。 只有在执行机构端点在防火墙后访问时,才建议禁用安全性 。
7、如何在自定义端口上运行 Spring Boot 应用程序?
为 了 在 自 定 义 端 口 上 运 行 Spring Boot 应 用 程 序, 您 可 以 在 application.properties 中 指 定 端 口 。
server.port = 8090
8、什么是 YAML?
YAML 是 一 种 人 类 可 读 的 数 据 序 列 化 语 言 。 它 通 常 用 于 配 置 文 件 。
与属性文件相比,如 果我们想要在配 置 文 件 中 添 加 复 杂 的 属 性, YAML 文 件 就 更 加 结 构 化, 而 且 更 少 混 淆 。 可 以 看 出 YAML 具 有 分 层 配 置 数 据 。
9、如何实现 Spring Boot 应用程序的安全性?
为 了 实 现 Spring Boot 的 安 全 性, 我 们 使 用 spring-boot-starter-security 依 赖 项, 并 且 必 须 添 加 安 全 配 置 。 它 只 需 要 很 少 的 代 码 。 配 置 类 将 必 须 扩 展 WebSecurityConfigurerAdapter 并 覆 盖 其 方 法 。
10、如何集成 Spring Boot 和 ActiveMQ?
对 于 集 成 Spring Boot 和 ActiveMQ, 我 们 使 用依 赖 关 系 。 它 只 需 要 很 少 的 配 置, 并 且 不 需 要 样 板 代 码 。
11、如何使用 Spring Boot 实现分页和排序?
使 用 Spring Boot 实 现 分 页 非 常 简 单 。 使 用 Spring Data-JPA 可 以 实 现 将 可 分 页 的传 递 给 存 储 库 方 法 。
12、什么是 Swagger?你用 Spring Boot 实现了它吗?
Swagger 广 泛 用 于 可 视 化 API, 使 用 Swagger UI 为 前 端 开 发 人 员 提 供 在 线 沙 箱 。 Swagger 是 用 于 生 成 RESTful Web 服 务 的 可 视 化 表 示 的 工 具,规 范 和 完 整 框 架 实 现 。 它 使 文 档 能 够 以 与 服 务 器 相 同 的 速 度 更 新 。 当 通 过 Swagger 正 确 定 义 时, 消 费 者 可 以 使 用 最 少 量 的 实 现 逻 辑 来 理 解 远 程 服 务 并 与 其 进 行 交 互 。因 此,Swagger 消 除 了 调 用 服 务 时 的 猜 测 。
13、什么是 Spring Profiles?
Spring Profiles 允 许 用 户 根 据 配 置 文 件 (dev, test, prod 等) 来 注 册 bean 。 因 此, 当 应 用 程 序 在 开 发 中 运 行 时, 只 有 某 些 bean 可 以 加 载, 而 在 PRODUCTION 中, 某 些 其 他 bean 可 以 加 载 。 假 设 我 们 的 要 求 是 Swagger 文 档 仅 适 用 于 QA 环 境, 并 且 禁 用 所 有 其 他 文 档 。 这 可 以 使 用 配 置 文 件 来 完 成 。 Spring Boot 使 得 使 用 配 置 文 件 非 常 简 单 。
14、什么是 Spring Batch?
Spring Boot Batch 提 供 可 重 用 的 函 数, 这 些 函 数 在 处 理 大 量 记 录 时 非 常 重 要, 包 括 日 志/跟 踪, 事 务 管 理, 作 业 处 理 统 计 信 息, 作 业 重 新 启 动, 跳 过 和 资 源 管 理 。 它 还 提 供 了 更 先 进 的 技 术 服 务 和 功 能, 通 过 优 化 和 分 区 技 术, 可 以 实 现 极 高 批 量 和 高 性 能 批 处 理 作 业 。 简 单 以 及 复 杂 的 大 批 量 批 处 理 作 业 可 以 高 度 可 扩 展 的 方 式 利 用 框 架 处 理 重 要 大 量 的 信 息 。
15、什么是 FreeMarker 模板?
FreeMarker 是 一 个 基 于 Java 的 模 板 引 擎,最 初 专 注 于 使 用 MVC 软 件 架 构 进 行 动 态 网 页 生 成 。使 用 Freemarker 的 主 要 优 点 是 表 示 层 和 业 务 层 的 完 全 分 离 。程 序 员 可 以 处 理 应 用 程 序 代 码, 而 设 计 人 员 可 以 处 理 html 页 面 设 计 。 最 后 使 用 freemarker 可 以 将 这 些 结 合 起 来, 给 出 最 终 的 输 出 页 面 。
16、如何使用 Spring Boot 实现异常处理?
Spring 提 供 了 一 种 使 用 ControllerAdvice 处 理 异 常 的 非 常 有 用 的 方 法 。 我 们通过 实 现 一 个 ControlerAdvice 类, 来 处 理 控 制 器 类 抛 出 的 所 有 异 常 。
17、您使用了哪些 starter maven 依赖项?
使 用 了 下 面 的 一 些 依 赖 项
spring-boot-starter-activemq
spring-boot-starter-security
这 有 助 于 增 加 更 少 的 依 赖 关 系, 并 减 少 版 本 的 冲 突 。
18、什么是 CSRF 攻击?
CSRF 代 表 跨 站 请 求 伪 造 。 这 是 一 种 攻 击, 迫 使 最 终 用 户 在 当 前 通 过 身 份 验 证 的 Web 应 用 程 序 上 执 行 不 需 要 的 操 作 。 CSRF 攻 击 专 门 针 对 状 态 改 变 请 求, 而 不 是 数 据 窃 取, 因 为 攻 击 者 无 法 查 看 对 伪 造 请 求 的 响 应 。
19、什么是 WebSockets?
WebSocket 是 一 种 计 算 机 通 信 协 议, 通 过 单 个 TCP 连 接 提 供 全 双 工 通 信 信 道 。
1 、 WebSocket 是 双 向 的 -使 用 WebSocket 客 户 端 或 服 务 器 可 以 发 起 消 息 发 送 。
2 、 WebSocket 是 全 双 工 的 -客 户 端 和 服 务 器 通 信 是 相 互 独 立 的 。
3、单 个 TCP 连 接 -初 始 连 接 使 用 HTTP,然 后 将 此 连 接 升 级 到 基 于 套 接 字 的 连 接 。 然 后 这 个 单 一 连 接 用 于 所 有 未 来 的 通 信
4 、 Light -与 http 相 比, WebSocket 消 息 数 据 交 换 要 轻 得 多 。
20、什么是 AOP?
在 软 件 开 发 过 程 中, 跨 越 应 用 程 序 多 个 点 的 功 能 称 为 交 叉 问 题 。 这 些 交 叉 问 题 与 应 用 程 序 的 主 要 业 务 逻 辑 不 同 。 因 此, 将 这 些 横 切 关 注 与 业 务 逻 辑 分 开 是 面 向 方 面 编 程 (AOP) 的 地 方 。
21、什么是 Apache Kafka?
Apache Kafka 是 一 个 分 布 式 发 布 - 订 阅 消 息 系 统 。 它 是 一 个 可 扩 展 的, 容 错 的 发 布 - 订 阅 消 息 系 统, 它 使 我 们 能 够 构 建 分 布 式 应 用 程 序 。 这 是 一 个 Apache 顶 级 项 目。 Kafka 适 合 离 线 和 在 线 消 息 消 费 。
22、我们如何监视所有 Spring Boot 微服务?
Spring Boot 提 供 监 视 器 端 点 以 监 控 各 个 微 服 务 的 度 量 。这 些 端 点 对 于 获 取 有 关 应 用 程 序 的 信 息 (如 它 们 是 否 已 启 动) 以 及 它 们 的 组 件 (如 数 据 库 等) 是 否 正 常 运 行 很 有 帮 助 。 但 是, 使 用 监 视 器 的 一 个 主 要 缺 点 或 困 难 是, 我 们 必 须 单 独 打 开 应 用 程 序 的 知 识 点 以 了 解 其 状 态 或 健 康 状 况 。想 象 一 下 涉 及 50 个 应 用 程 序 的 微 服 务, 管 理 员 将 不 得 不 击 中 所 有 50 个 应 用 程 序 的 执 行 终 端 。
为 了 帮 助 我 们 处 理 这 种 情 况, 我 们 将 使 用 位 于
的 开 源 项 目。 它 建 立 在 Spring Boot Actuator 之 上, 它 提 供 了 一 个 Web UI, 使 我 们 能 够 可 视 化 多 个 应 用 程 序 的 度 量。