Spring Boot 踩坑记录:树形菜单取不到权限?Java Stream 结合递归 flatMap 轻松搞定 在开发权限管理系统(如 OA、RBAC 权限模型)时,用户的菜单通常是树状嵌套结构(即:目录 -> 菜单 -> 按钮,子节点存放在 children 属性中)。而在登录时,后端需要将用户的所有权限标识(perms)一次性返回给前端用于做按钮级鉴权。 今天在开发时遇到一个经典 Bug:明明数据库里配了 2026-09-05 后端探秘 1 野猪凌梦
Spring Boot 踩坑记录:@Value 无法注入 YAML 数组及完美解决方案 在开发 OA 系统并配置 Sa-Token 权限拦截白名单时,需要将免登录路径(如 Swagger 文档、登录接口等)提取到 application.yml 中统一管理。原本以为是一个简单的属性注入,却触发了 Spring Boot 配置解析的一个经典陷阱。 💥 踩坑现场 1. 配置文件 (app 2026-09-04 后端探秘 6 野猪凌梦
优雅处理前端回显:在 VO 中使用 private static 内部类的巧思 在日常的 Java 后端开发中,我们经常会遇到这样的需求:前端需要开发一个“分配角色”的功能,页面既要展示所有的角色列表供用户勾选,又要回显当前用户已经拥有的角色(默认打 ✅)。 为了满足这个需求,我们需要组装一个包含两部分数据的实体: 全部角色列表(为精简传输,仅保留角色 ID 和名称)。 已选中 2026-08-31 后端探秘 4 野猪凌梦
Spring Boot 踩坑记录:为什么 application.yml 中的 Jackson 日期格式化对 LocalDateTime 不生效? 💡 问题现象 在开发 Spring Boot 后端项目时,为了让接口返回给前端的 JSON 日期格式保持统一(去掉默认的带 T 的格式),我们通常会在 application.yml 中加上这样一段 Jackson 的全局配置: spring: jackson: date-format 2026-08-14 后端探秘 6 野猪凌梦
SSH练手项目踩坑记录:Struts2接收OkHttp发送的JSON数据报空指针异常 在最近的 SSH(Struts2 + Spring + Hibernate)练手项目中,我尝试使用 OkHttp 向后端的 Struts2 Action 发送 JSON 格式的 POST 请求,结果遭遇了经典的 NullPointerException。这篇文章记录了完整的排查过程和最终的解决方案, 2026-08-02 后端探秘 8 野猪凌梦
实战复盘:解决老 SSH 项目的循环依赖与 AOP 代理冲突 最近在维护一个“祖传”的 SSM + JSP 老项目,本来以为顺着老代码的葫芦画瓢就是分分钟的事,结果在“循环依赖”和“AOP 代理”这两个老演员身上,我结结实实地卡了半天。 今天就把这段从“疯狂报错”到“底层顿悟”的真实踩坑记录写下来,希望能帮到同样在维护老项目的小伙伴们! 🚨 第一回合:AOP 2026-07-22 后端探秘 15 野猪凌梦
个人项目踩坑实录:被“逻辑删除”和“唯一索引”反复拷打后,我找到了这个神仙解法 最近在做自己的 OA 系统项目,写到 RBAC(基于角色的访问控制)权限模块时。本来以为给角色写个增删改查(CRUD)就是分分钟的事,结果在“唯一索引”和“逻辑删除”这两个老演员身上,我结结实实地摔了三个跟头。 今天就把这段“反复被拷打”的真实踩坑记录写下来,希望能帮到同样在写 CRUD 的小伙伴们 2026-07-19 后端探秘 17 野猪凌梦
SpringBoot 3 整合 MyBatis-Plus 3.5.17 踩坑记录:IService 包路径找不到怎么办? 背景说明 最近在搭建一个新的后端脚手架,技术栈选用了 Spring Boot 3.2.5 搭配 MyBatis-Plus。 在项目初始化阶段,我习惯使用 IDEA 的 MyBatisX 插件来一键生成 Entity、Mapper 和 Service 层代码。但在这次引入了较新的 MyBatis-Pl 2026-07-18 后端探秘 11 野猪凌梦
MySQL 逻辑删除遭遇唯一索引冲突的优雅解法 在现代化后端开发中,逻辑删除(Logical Delete) 几乎是互联网项目的标配。通过用一个 is_delete(0-未删除,1-已删除)字段来代替物理删除,既能防止用户误删数据,又便于后续的数据留存分析。 然而,当逻辑删除碰上唯一索引(Unique Key),一个隐藏的巨坑就悄然出现了。 今天 2026-06-13 后端探秘 12 野猪凌梦
设计模式实战:用 Java 优雅实现适配器模式解决接口不兼容 在日常的系统开发或重构中,我们经常会遇到这样的尴尬场景:系统需要引入一个新的第三方库,或者需要兼容一个老旧的遗留系统。但是,这些外部或老旧系统的代码往往与我们当前系统内部的标准接口不一致。甚至在很多历史遗留项目中,压根就没有定义接口规范,业务逻辑被死死地硬编码在具体的类中。 如果我们直接修改现有的核 2026-06-07 后端探秘 29 野猪凌梦