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

相关推荐
程序员张32 小时前
Maven编译和打包插件
java·spring boot·maven
ybq195133454313 小时前
Redis-主从复制-分布式系统
java·数据库·redis
weixin_472339463 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
灵犀学长3 小时前
EasyExcel之SheetWriteHandler:解锁Excel写入的高阶玩法
spring boot·excel
小毛驴8504 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
zwjapple4 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
DKPT4 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟6 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°6 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
DuelCode7 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis