苍穹外卖Day10


文章目录


前言

``

一、清晨遇见的bug

1.日志中出现

ERR Client sent AUTH, but no password is set

RedisConnectionFailureException: Unable to connect to Redis

解决办法

1.日志说明未连接上redis,先看redis是否启动

2.使用可视化软件(another redis desktop manage)看能否连接上本地redis

3.看配置文件中的连接是否有问题(在这里找到了问题)

错误信息 ERR Client sent AUTH, but no password is set 直接说明:

应用配置中指定了 Redis 密码(如 spring.redis.password=xxx);

但实际运行的 Redis 服务器未设置密码(默认情况下 Redis 没有密码);

两者冲突,导致 Redis 拒绝了带认证信息的连接请求。

2.小程序登录失败(日志显示 "异常信息:登录失败")

小程序登陆失败,spring boot可以运作,但是小程序不能登陆。通常思考微信登陆流程有问题。

思考微信登陆流程:小程序端调用 wx.login() 获取临时登录凭证 code(日志中 0e18hq000bbYIU1iIr300ukzEj38hq0o 可能就是这个 code);

后端接收 code,调用微信官方接口 https://api.weixin.qq.com/sns/jscode2session 换取用户唯一标识 openid 和会话密钥 session_key;

后端根据 openid 查询数据库(是否已存在该用户),不存在则创建新用户;

生成登录令牌(如 JWT)返回给小程序,完成登录。

解决办法

通过日志得知已经获取到登录凭证,那就是后端调用接口时发现后端发送的openid与session_key与当前小程序登录的openid不一致。导致登录失败

3.接口文档调试时使用账号密码登录失败

ERROR 27556 --- [nio-8080-exec-3] com.sky.handler.GlobalExceptionHandler : 异常信息:密码错误

思考流程:我使用命令查询了mysql里面的表,看管理员账号密码。但还是显示密码错误。我输入不存在的账号,显示账号不存在。3.我在idea中database新增员工,通过bash命令查询同步了。4.使用新增的账号和密码也显示密码错误而不是账号不存在。

说明1.数据库与idea这个项目连接上了。2.存在这个账号只是单单密码错误。

于是我去根据提示去查看我的数据库密码输出是明文还是加密。显示明文,而后端显示使用DK5加密。

二、RedisTemplate对象

1. 为什么需要 RedisTemplate?

Redis 本身是基于命令行的(如 set key value、hgetall hashKey),直接在 Java 中调用需要处理:

与 Redis 服务器的连接(建立、断开、池化);

数据序列化(Java 对象 ↔ Redis 存储的字节流);

各种数据结构(String、Hash、List 等)的命令封装。

RedisTemplate 把这些底层工作全部做好了,比如你想存一个用户对象到 Redis,只需:

java 复制代码
// 无需关心连接和序列化,直接调用API
redisTemplate.opsForValue().set("user:100", user); // 存对象
User user = (User) redisTemplate.opsForValue().get("user:100"); // 取对象

2. 依赖注入(@Autowired)的价值

如果不通过 Spring 注入,你需要手动做这些:

java 复制代码
// 手动创建的话,代码繁琐且难以维护
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory); // 手动设置连接工厂
redisTemplate.setKeySerializer(new StringRedisSerializer()); // 手动配置序列化器
redisTemplate.afterPropertiesSet(); // 手动初始化

而用 @Autowired 后,Spring 会自动把这些配置好的 RedisTemplate 实例 "送" 到你的类中,你直接用就行,不用写一行初始化代码。


总结

如果我的内容对你有帮助,请点赞👍、关注❤、收藏⭐️。创作不易,大家的支持就是我坚持下去的动力!

相关推荐
好学且牛逼的马4 分钟前
【SSM 框架 | day27 spring MVC】
java
是烟花哈5 分钟前
后端开发CRUD实现
java·开发语言·spring boot·mybatis
爱分享的鱼鱼28 分钟前
Java基础(六:线程、线程同步,线程池)
java·后端
随便叫个啥呢44 分钟前
java使用poi-tl模版+vform自定义表单生成word,使用LibreOffice导出为pdf,批量下载为压缩文件
java·pdf·word·zip
CodeCraft Studio44 分钟前
国产化Word处理控件Spire.Doc教程:使用Java将RTF文件转换为PDF的全面教程
java·pdf·word·spire.doc·rtf转pdf·文件格式转换·文档开发sdk
随便叫个啥呢1 小时前
java使用poi-tl模版+vform自定义表单生成word
java·word·poi-tl
开心星人1 小时前
Leetcode hot100 Java刷题(二)
java·算法·leetcode
喵手1 小时前
Java与Microservices架构的结合:构建可扩展、高可用的系统!
java·架构·华为云
半部论语1 小时前
MyBatis-Plus 通用 CRUD 实现原理技术文档
java·spring boot·mybatis
手握风云-1 小时前
JavaEE 进阶第六期:Spring Boot 如何重塑后端开发
java·spring boot·java-ee