Spring Boot 经典面试题(八)

devtools/2024/12/22 1:24:53/

1.SpringBoot微服务中如何实现 session 共享

在Spring Boot微服务中实现session共享可以通过不同的方式,取决于你的微服务架构和需求。下面列出了一些常见的方法:

  1. 使用Spring Session和Redis

    • 配置Spring Session来将session数据存储在Redis中。
    • 所有微服务都可以连接到相同的Redis实例,并使用相同的配置。
    • 这样,用户在一个微服务中登录后,其他微服务也可以访问同一用户的session数据。
    • 可以使用Spring Boot提供的spring-session-data-redis依赖来实现。
  2. 使用JWT(JSON Web Tokens)

    • 将用户认证信息封装在JWT中,并在微服务之间传递。
    • 在微服务中验证JWT,并使用其中的用户信息来处理请求。
    • 这种方法不需要维护session,而是使用token来验证用户身份。
    • 可以使用Spring Security来处理JWT的生成和验证。
  3. 使用统一的认证服务

    • 创建一个单独的微服务,负责用户认证和管理session。
    • 其他微服务在需要验证用户身份时,向认证服务发送请求。
    • 认证服务可以通过JWT或其他方式验证用户身份,并返回相应的用户信息。
    • 这种方法将认证逻辑集中在一个地方,可以更好地管理用户会话。
  4. 使用OAuth2

    • 配置一个OAuth2认证服务器,负责用户认证和授权。
    • 其他微服务通过OAuth2协议与认证服务器交互,获取用户信息和访问令牌。
    • 认证服务器可以使用JWT来生成令牌,实现无状态的session管理。
    • 这种方法适用于需要实现多种认证方式或集成第三方认证服务的情况。

根据你的具体需求和微服务架构,选择合适的方法来实现session共享。每种方法都有其优缺点,需要根据实际情况进行权衡和选择。

2. 您使用了哪些 starter maven 依赖项

作为一个语言模型,我本身并没有使用Maven依赖项,但我可以告诉你在一般的Spring Boot项目中,常用的一些starter Maven依赖项。

  1. spring-boot-starter-web:用于构建Web应用程序,包括Spring MVC和内嵌的Tomcat服务器。

  2. spring-boot-starter-data-jpa:用于与关系型数据库进行交互,使用JPA进行持久化操作。

  3. spring-boot-starter-security:用于实现应用程序的安全性,包括身份验证、授权等功能。

  4. spring-boot-starter-test:用于编写和运行测试,包括JUnit、Spring Test等。

  5. spring-boot-starter-actuator:用于监控和管理应用程序,提供健康检查、度量指标等功能。

  6. spring-boot-starter-log4j2spring-boot-starter-logback:用于配置日志记录,可以选择Log4j2或Logback作为日志记录实现。

  7. spring-boot-starter-validation:用于验证请求参数的有效性。

  8. spring-boot-starter-cache:用于启用应用程序中的缓存支持。

  9. spring-boot-starter-mail:用于发送电子邮件。

  10. spring-boot-starter-redisspring-boot-starter-data-redis:用于与Redis进行交互,实现缓存、会话共享等功能。

  11. spring-boot-starter-actuator:用于监控和管理Spring Boot应用程序。

  12. spring-boot-starter-thymeleafspring-boot-starter-mustache:用于使用Thymeleaf或Mustache作为模板引擎。

这只是一些常用的starter依赖项,具体选择取决于你的项目需求和技术栈。

3.Spring Boot 中的 starter 到底是什么

在Spring Boot中,Starter是一种特殊的Maven依赖项,它旨在简化项目的构建和依赖管理。Starter提供了一组预配置的依赖项,以便快速启动特定类型的应用程序。每个Starter都是一个聚合的依赖项集合,包含了项目开发中经常需要的一组依赖项。

Spring Boot的Starter通常以spring-boot-starter-xxx的命名格式命名,其中xxx表示Starter的用途或功能,比如spring-boot-starter-web用于构建Web应用程序,spring-boot-starter-data-jpa用于与JPA数据访问层交互,等等。

使用Starter的好处包括:

  1. 简化依赖管理:Starter提供了一组预配置的依赖项,避免了手动管理依赖的复杂性。

  2. 快速启动:通过添加适当的Starter依赖项,可以快速启动特定类型的应用程序,无需手动配置大量的依赖项。

  3. 自动配置:Spring Boot会根据引入的Starter自动配置应用程序的各个组件,减少了手动配置的工作量。

  4. 版本兼容性:Spring Boot的Starter集中管理了各个依赖项的版本,确保它们之间的兼容性。

总的来说,Spring Boot的Starter使得构建和管理Spring应用程序变得更加简单和快捷,同时提供了一致性和可靠性。


http://www.ppmy.cn/devtools/2225.html

相关文章

51单片机学习笔记——点亮数码管、模块化编程

工作原理图 138译码器 G1、G2A、G2B为138译码器的使能端 P22、P23、P24为输入口控制Y0-Y7的动作,以二进制的算法 具体如下: P22 P23 P24 0 0 0 Y0为1其余为0 0 0 1 Y1为1其余为0 0 1 0 Y2…

[阅读笔记1][GPT-3]Language Models are Few-Shot Learners

首先讲一下GPT3这篇论文,文章标题是语言模型是小样本学习者,openai于2020年发表的。 这篇是在GPT2的基础上写的,由于GPT2还存在一些局限,这篇对之前的GPT2进行了一些完善。GPT2提出了多任务学习,也就是可以零样本地用在…

正则表达式中?=、?!、?<=、?<!、?:的理解与应用举例

正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串表达对字符串的一种过滤逻辑,这篇文章主要给大家介绍了关于正则表达式中?、?!、?<、?<!、?:的理解与应用举例的相关资料,需要的朋友可以参考下 …

什么是XXE攻击?如何进行防护

安全性很难做到正确,即使在当今具有安全意识的世界中,也存在一些严重的漏洞,例如 XML 外部实体 (XXE),它们被忽视并最终成为破坏的原因。 XML 外部实体 (XXE) 攻击是一种计算机安全漏洞,通常存在于 Web 应用程序中&…

Day37|贪心算法part06:738.单调递增的数字、968. 监控二叉树、贪心总结

738. 单调递增的数字 总体思想就是从后往前遍历,比较第i位和第i1位的大小,不符合顺序char[i]减1,i1位填9,找到需要填9的最先位置,然后填9。 class Solution {public int monotoneIncreasingDigits(int n) {String s …

WEB前端-笔记(二)

一、事件 1.1类型 focus 获取焦点事件 ipt.addEventListener("focus", () > {.log("") }) blue 失去焦点事件 ipt.addEventListener("blur", () > {console.log("") }) inout 文本输入事件 txt.addEventListener("i…

Elasticsearch克隆索引

我所使用的Elasticsearch的版本是基于7.17.7。 需求是将某个ES的索引进行克隆。例如我要将索引test_0419_1克隆一份新的索引test_0419_2。步骤如下: 首先将源索引进行修改PUT /test_0419_1/_block/write,即禁止对这个索引进行写数据操作。然后执行克隆…

ArrayList的基本使用

我们知道,在java当中,当我们需要将一些相同数据放入一块时,需要使用数组,但是它有个弊端,数组在创建时必须声明长度,也就是数组长度不可变。但是,当我们使用ArrayList时,它相当于一个…