苍穹外卖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 实例 "送" 到你的类中,你直接用就行,不用写一行初始化代码。


总结

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

相关推荐
ym hyd 1112 小时前
试题库管理系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设
AC赳赳老秦2 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up2 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
吠品4 小时前
CSS图片模糊过渡:一个transition加filter就够
java·数据库·notepad++
步行cgn4 小时前
Spring 全注解开发详解
java·后端·spring
长河5 小时前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
code2cat5 小时前
Java进阶篇之LongAdder:把统计更新分散,再读取总和
java·并发编程·原子类·longadder
凯哥Java5 小时前
写代码怎么避免逻辑漏洞?
java·开发语言·人工智能·自动化
Ivanqhz5 小时前
正余弦位置编码(Sinusoidal Positional Encoding)
java·linux·数据库
BD_Marathon5 小时前
消息对象中字段的说明
java·前端·python