Spring Boot 经典面试题(八)

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应用程序变得更加简单和快捷,同时提供了一致性和可靠性。

相关推荐
RuoyiOffice1 分钟前
SpringBoot3+Vue3 最推荐的开源 OA 系统 2026:流程驱动、资源闭环、多端互通
spring boot·vue3·flowable·oa·协同办公·spring boot 3·开源oa
泡海椒5 分钟前
低代码规则开发:JQuick-Java声明式配置驱动开发落地教程
java·低代码·rxjava
Lost of 程序猿13 分钟前
ASP.NET Core API 版本管理与契约演进:船岸版本碎片化下的兼容性工程
后端·asp.net
吃饱了得干活23 分钟前
Redis 从单机到集群:持久化、主从复制、哨兵与集群完全指南
redis·后端
weixin_4407305023 分钟前
socket解决多次输入问题-大数据接收问题-模块动态导入
java·开发语言·servlet
用户31268748772028 分钟前
ReentrantLock 和 synchronized 到底选哪个?源码级对比与选型
java
老孙讲技术29 分钟前
【监控开发】把车间未戴帽和烟火报警接进安监值班群:workwearDetect 对图与 setMessageCallback 订 smokeAlarm
后端·物联网·音视频开发
计算机毕设定制辅导-无忧学长31 分钟前
基于Spring Boot的玄幻小说个性化推荐平台设计与实现
java·vue.js·spring boot·后端·mysql·推荐算法
码路漫漫32 分钟前
LRU 真的能解决日志按业务 Key 分文件的落地瓶颈吗?
java·后端
小满zs33 分钟前
Go语言第十一章(协程)
后端·go