后端探秘

20 篇文章
Spring Boot 踩坑记录:树形菜单取不到权限?Java Stream 结合递归 flatMap 轻松搞定

Spring Boot 踩坑记录:树形菜单取不到权限?Java Stream 结合递归 flatMap 轻松搞定

在开发权限管理系统(如 OA、RBAC 权限模型)时,用户的菜单通常是树状嵌套结构(即:目录 -> 菜单 -> 按钮,子节点存放在 children 属性中)。而在登录时,后端需要将用户的所有权限标识(perms)一次性返回给前端用于做按钮级鉴权。 今天在开发时遇到一个经典 Bug:明明数据库里配了

优雅处理前端回显:在 VO 中使用 private static 内部类的巧思

优雅处理前端回显:在 VO 中使用 private static 内部类的巧思

在日常的 Java 后端开发中,我们经常会遇到这样的需求:前端需要开发一个“分配角色”的功能,页面既要展示所有的角色列表供用户勾选,又要回显当前用户已经拥有的角色(默认打 ✅)。 为了满足这个需求,我们需要组装一个包含两部分数据的实体: 全部角色列表(为精简传输,仅保留角色 ID 和名称)。 已选中

实战复盘:解决老 SSH 项目的循环依赖与 AOP 代理冲突

实战复盘:解决老 SSH 项目的循环依赖与 AOP 代理冲突

最近在维护一个“祖传”的 SSM + JSP 老项目,本来以为顺着老代码的葫芦画瓢就是分分钟的事,结果在“循环依赖”和“AOP 代理”这两个老演员身上,我结结实实地卡了半天。 今天就把这段从“疯狂报错”到“底层顿悟”的真实踩坑记录写下来,希望能帮到同样在维护老项目的小伙伴们! 🚨 第一回合:AOP

个人项目踩坑实录:被“逻辑删除”和“唯一索引”反复拷打后,我找到了这个神仙解法

个人项目踩坑实录:被“逻辑删除”和“唯一索引”反复拷打后,我找到了这个神仙解法

最近在做自己的 OA 系统项目,写到 RBAC(基于角色的访问控制)权限模块时。本来以为给角色写个增删改查(CRUD)就是分分钟的事,结果在“唯一索引”和“逻辑删除”这两个老演员身上,我结结实实地摔了三个跟头。 今天就把这段“反复被拷打”的真实踩坑记录写下来,希望能帮到同样在写 CRUD 的小伙伴们

MySQL 逻辑删除遭遇唯一索引冲突的优雅解法

MySQL 逻辑删除遭遇唯一索引冲突的优雅解法

在现代化后端开发中,逻辑删除(Logical Delete) 几乎是互联网项目的标配。通过用一个 is_delete(0-未删除,1-已删除)字段来代替物理删除,既能防止用户误删数据,又便于后续的数据留存分析。 然而,当逻辑删除碰上唯一索引(Unique Key),一个隐藏的巨坑就悄然出现了。 今天

设计模式实战:用 Java 优雅实现适配器模式解决接口不兼容

设计模式实战:用 Java 优雅实现适配器模式解决接口不兼容

在日常的系统开发或重构中,我们经常会遇到这样的尴尬场景:系统需要引入一个新的第三方库,或者需要兼容一个老旧的遗留系统。但是,这些外部或老旧系统的代码往往与我们当前系统内部的标准接口不一致。甚至在很多历史遗留项目中,压根就没有定义接口规范,业务逻辑被死死地硬编码在具体的类中。 如果我们直接修改现有的核