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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.2 算法之 前缀和

学习笔记参考:https://leetcode.cn/leetbook/read/qian-zhui-he/nk1f5i/ 一维前缀和 前缀和是算法题中一个重要的技巧,经常作为一种优化方式出现在其他算法的一些子环节中。本课程就来带着同学们整理与巩固前缀和相关知识点,在学习完本课程之…

SpringBoot+FreeMaker

目录 1.FreeMarker说明2.SpringBootFreeMarker快速搭建Pom文件application.properties文件Controller文件目录结构 3.FreeMarker数据类型3.1.布尔类型3.2.数值类型3.3.字符串类型3.4.日期类型3.5.空值类型3.6.sequence类型3.7.hash类型 4.FreeMarker指令assign自定义变量指令if…

C++版【AVL树的模拟实现】

前言 在学习AVL树的底层之前,先回顾一下二叉搜索树,我们知道二叉搜索树在极端场景是会形成单支树的,如下图: 在退化成单支树后,查找的效率就会降到O(n),所以为了解决退化成单支树的情况,AVL树就…

stm32移植嵌入式数据库FlashDB

本次实验的程序链接stm32f103FlashDB嵌入式数据库程序资源-CSDN文库 一、介绍 FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能…

Ubuntu20.04安装FloodLight最新版本

Ubuntu20.04安装FloodLight最新版本 网上的很多教程尝试了一下都不对,并且很多都是基于Ubuntu14的旧版本系统,其中的Python环境大多是基于2.0的,由于本人所使用的系统是Ubuntu20.04,后再油管澳大利亚某个学校的网络教学视频的帮助…

【Vue】面试题

vue的组建通信方式 父子关系:props & $emit 、 $parent / $children 、 ref / $refs 、 插槽跨层级关系: provide & inject通用方案:Vuex 或 eventbus 插播:兄弟组建怎么通信? eventbusVuex通过中间件&…

架构师系列-搜索引擎ElasticSearch(六)- 映射

映射配置 在创建索引时,可以预先定义字段的类型(映射类型)及相关属性。 数据库建表的时候,我们DDL依据一般都会指定每个字段的存储类型,例如:varchar、int、datetime等,目的很明确,就…

getLocation需要在app.json中声 明permission字段

这是我在使用微信小程序的时候 获取本机地址的时候会出现的这个问题 这个问题很好解决 获取本地定位的代码也很简单 wx.getLocation({// 国内只能使用gcj02坐标系,wgs84不能使用;高德地图等都是使用的gcj02type: "gcj02",success: function (…

STM32之DHT11温湿度传感器

目录 一 DHT11温湿度传感器简介 1.1 传感器特点 1.2 传感器特性 1.3 传感器引脚说明 二 测量原理及方法 2.1 典型应用电路 2.2 单线制串行简介 2.2.1 串行接口 (单线双向) 2.2.2 数据示例 2.3 通信时序 三 单片机简介 3.1 STM32F103C8T6最小系统板 四 接线说明 …

011、Python+fastapi,第一个后台管理项目走向第11步:建立python+fastapi项目,简单测试一下

一、说明 本文章就是记录自己的学习过程,如果有用您可以参考,没用你就略过,没有好与不好之分,今天主要是参考了gitee上的一些项目,一步一步的往后i建立 对于学习来说,如果您有java c等经验,py…

wpf下RTSP|RTMP播放器两种渲染模式实现

技术背景 在这篇blog之前,我提到了wpf下播放RTMP和RTSP渲染的两种方式,一种是通过控件模式,另外一种是直接原生RTSP、RTMP播放模块,回调rgb,然后在wpf下渲染,本文就两种方式做个说明。 技术实现 以大牛直…

云轴科技ZStack支持国家地震烈度速报与预警工程实现秒级地震预警能力

编者按:巨灾项目,作为国家公共安全体系的重要组成部分,对于提升我国防灾减灾能力具有举足轻重的意义。其中,地震预警作为巨灾项目的重要一环,其技术的创新与应用直接关系到人民群众的生命财产安全。云轴科技ZStack在国…

vite配置eslint24年4月期,eslint.config.js

一、背景 最新版的eslint,默认init之后为eslint.config.js,整体配置较之前版本均有变动; vite&ts版本。 1.1 安装 pnpm i eslint -D1.2 初始化 npx eslint --init npx eslint --init Need to install the following packages:eslint/…

数据库基本介绍

目标:了解数据库的功能和常见数据库分类、数据库产品 数据库基本知识 数据库分类 SQL简介 MySQL访问 1、数据库基本知识 目标:了解数据库的概念和数据库的作用 概念 数据库:database(DB),是一种存储数据的仓库 数…

Python3+Appium+Android SDK+真机+实现app自动化测试-基于Red Hat7.9版本搭建环境及运行python脚本。

1、总体概述? 收费有收费的服务,那就是细致。Red Hat9.0自动化环境也有,需要的说一声。 1、实现在Red Ha/t Enterprise Linux7.9环境中搭建部署app自动化测试环境,提供详细步骤。 2、版本说明:jdk8/17+nodejs16/18/19/20/21+android sdk29+python3.9.18/3.11.1+appium1…

RT-thread信号量与互斥量

1,信号量 信号量是一种轻型的用于解决线程间同步问题的内核对象,线程可以获取或释放它,从而达到同步或互斥的目的。理解资源计数适合于线程间工作处理速度不匹配的场合;信号量在大于0时才能获取,在中断、线程中均可释放信号量。 为了体现使用信号量来达到线程间的同步,…

qemu源码解析一

基于qemu9.0.0 简介 QEMU是一个开源的虚拟化软件,它能够模拟各种硬件设备,支持多种虚拟化技术,如TCG、Xen、KVM等 TCG 是 QEMU 中的一个组件,它可以将高级语言编写的代码(例如 C 代码)转换为可在虚拟机中…

稀碎从零算法笔记Day49-LeetCode:设计哈希集合

题型:模拟 链接:705. 设计哈希集合 - 力扣(LeetCode) 来源:LeetCode 题目描述 不使用任何内建的哈希表库设计一个哈希集合(HashSet)。 实现 MyHashSet 类: void add(key) 向哈…

关闭win10搜索中的热门搜索广告

任务目标,关闭掉这个煞笔热门搜索功能 1.首先WinR快捷键,输入“regedit”来打开注册表 2.在注册表中定位到计算机\HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows 并在Windows下新建“项”,命名为“Explorer”,并在这新…

Python大数据分析——一元与多元线性回归模型

Python大数据分析——一元与多元线性回归模型 相关分析概念示例 一元线性回归模型概念理论分析函数示例 多元线性回归模型概念理论分析示例 线性回归模型的假设检验模型的F检验理论分析示例 模型的T检验理论分析示例 相关分析 概念 a 正相关;b 负相关;c…