一个人花了半年搭了套微服务框架,现在只需要复制粘贴
如果让我选一个自己做过的最正确的决定,那就是花了半年把微服务框架的底子搭好。
不是认证中心、不是权限中心——是那层所有服务共享的东西:CommonAuthFilter、@WuxianAccess、CommonExceptionHandler。今天复盘一下我是怎么一步步搭出来的,以及这套东西到底省了多少事。
从重复代码开始的
最早我的 auth、perm、blog 三个服务是独立开发的。每个都有自己的 JWT 解析逻辑,自己的异常处理,自己的权限校验。代码差不多,但分散在三个仓库里。
改一个 JWT 解析的 bug,三个服务要改三次。
有一次我修了一个 token 过期的处理逻辑,改了 auth 和 perm,忘了改 blog。结果博客的 API 返回了一个莫名其妙的 500。排查了一下午。
那天晚上我就决定:抽共用代码。
wuxiannet-common 里有什么
现在这个公共包里沉淀了这些组件:
| 组件 | 一句话 |
|---|---|
| CommonAuthFilter | 不管 USER token 还是 APP token,一个过滤器全搞定 |
| @WuxianAccess | 注解里写权限码,切面自动校验 |
| @OperationLog | 注解里写操作描述,切面自动记日志 |
| JwtTokenUtil | JWT 解析一把梭 |
| UserContext | 任何地方拿当前用户信息 |
| CommonExceptionHandler | 全局异常处理,返回友好错误 |
| ApiResult / PageResult | 统一响应格式 |
听起来不多。但对一个独立开发者来说,意味着:
新接一个服务,只需要写业务代码。
举个真实的例子
前两个月我加了个 scheduler 服务。你猜后端代码写了多久?
- pom.xml 引入 common 包
- application.yml 配置数据库
- 加个 SecurityConfig 启用 CommonAuthFilter
- 写业务代码
一天。 从建项目到跑起来。
没有写 JWT 解析。没有写异常处理。没有写权限校验。没有写统一的返回格式。这些东西 common 包里全有了,引进来就能用。
踩过的坑
Map.of() 不能传 null。
这是 Java 基础语法限制,但我忘了。CommonAuthFilter 里有一段写 401 返回:
Map.of("code", 401, "message", msg, "data", null)
本地跑没问题。打成 JAR 包部署上去,直接 NPE,空响应体。用户看到的是一个白屏——比 401 更糟,因为用户根本不知道发生了什么。
改成 new HashMap<>() 就解决了。后来我把这个写进了编码规范:所有 Map.of() 先检查有没有 null value。
回头看看
这半年搭框架,看起来是「慢」,其实是「快」。
每个服务都省了 80% 的重复代码。修一个 bug 一个地方改了所有服务生效。接新服务只要一天。这不是过度设计,这是独立开发者用最少的资源做最多的事。
如果你也在纠结要不要抽公共代码——别纠结了。重复三次就抽。你不会后悔。
关于作者:无羡,独立开发者,全栈工程师,专注 AI 应用与微服务架构。
📌 分类:技术复盘
🔗 个人博客 — 更多技术文章
✨ 开发者福利整理 — 云服务资源汇总
📂 软件工坊 — 我的技术分享
🌐 个人门户 — 独立开发作品全集
更多推荐

所有评论(0)