跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java Web 自研框架 18 年架构决策复盘与核心思路

Java Web 自研框架基于 18 年政务系统实战经验,放弃 Spring 全家桶,手写轻量 IOC 容器与注解路由。通过 CGLIB 实现 AOP、ASM 读取参数名、ThreadLocal 解耦业务层、MongoDB 混合存储及 MyBatis 源码级优化解决 Oracle 分页问题。支持 Excel 模板驱动报表与 Activiti 工作流任意跳转。核心原则为轻量稳定、无侵入、可维护,确保代码逻辑清晰、问题定位快速,适用于部署环境受限或需长期演进的企业级系统。

GRACE Grace发布于 2026/4/9更新于 2026/5/2115 浏览
Java Web 自研框架 18 年架构决策复盘与核心思路

深耕政务信息化 20 年,自研 Java Web 框架支撑省级新农保、全国跨省医保结算等核心民生系统,稳定运行 18 年。

本系列不讲空泛理论,只复盘真实生产环境下的架构决策、踩坑经历、落地方案,不求优雅,但求能跑、能扛、能维护。

在长期维护政务系统的过程中,逐渐形成一套轻量、稳定、无侵入、可长期演进的架构思路。这套框架没有依赖流行全家桶,而是围绕业务痛点一点点打磨,最终支撑了海量高并发、高可靠的民生业务。

本系列将从以下 10 个核心决策展开:

  1. 放弃 Spring,手写轻量 IOC 容器
  2. 注解路由 + 参数路由,实现新老代码平滑迁移
  3. 统一入参解析,前后端彻底解耦
  4. CGLIB + 责任链实现轻量 AOP,搞定事务、日志、监控
  5. ASM 字节码直读,100% 获取方法参数名
  6. ThreadLocal 上下文管理,业务层彻底告别 Http
  7. MongoDB 混合存储,零侵入提升查询性能
  8. 修改 MyBatis 源码 1 行,搞定 Oracle 物理分页
  9. Excel 模板驱动政务报表,业务人员直接改格式
  10. Activiti 工作流任意跳转、回退,满足政务灵活审批

所有内容均来自生产环境真实落地,可直接复用。

框架全景图

┌─────────────────────────────────────────────────────────┐
│ 前端层 │
│ browise RIA 框架(基于 Dojo 封装) │
│ DataCenter / DataStore / JSON 序列化 │
└──────────────────────────┬──────────────────────────────┘
│ POST JSON │
┌──────────────────────────▼──────────────────────────────┐
│ route.java(唯一 Servlet) │
│ ┌──────────────┬──────────────┬──────────────┐
│ │ 登录校验 │ 路由分发 │ 异常处理 │
│ └──────────────┴──────────────┴──────────────┘
└──────────────────────────┬──────────────────────────────┘
│ ┌──────────────────────────▼──────────────────────────────┐
│ BeanFactory(IOC 容器) │
│ @bean 实例化 @property 注入 @aoppoint 代理 │
│ │
│ CGLIB 代理 + 责任链模式 │
│ @Trans 事务 @Logger 日志 @monitoring 监控 │
└──────────────────────────┬──────────────────────────────┘
│ ┌──────────────────────────▼──────────────────────────────┐
│ 业务层(@responseMapping 路由) │
│ Control → Service → Mapper(MyBatis) │
└──────────────────────────┬──────────────────────────────┘
│ ┌──────────────────────────▼──────────────────────────────┐
│ DBUtil(ORM 层) │
│ ┌──────────────┬──────────────┬──────────────┐
│ │ MyBatis │ MongoDB 缓存 │ 通用查询 │
│ │ CRUD │ level 1/2/3 │ JDBC 方式写文件│
│ └──────────────┴──────────────┴──────────────┘ │
│ ┌──────────────┬──────────────┐ │
│ │ SM4 加解密 │ AWR 报告解读 │ │
│ │ @myCode │ JVM 监控 │ │
│ └──────────────┴──────────────┘ │
└──────────────────────────┬──────────────────────────────┘
│ ┌──────────────────────────▼──────────────────────────────┐
│ 数据库(Oracle / MongoDB) │
└─────────────────────────────────────────────────────────┘

十个决策的统一原则

决策原则
自研 IOC只加需要的不加不需要的
注解路由 + 参数兼容不破坏老系统
统一入参解析前后端解耦
CGLIB + AOP加注解的方式
ASM 参数读取自己的问题自己解决
ThreadLocal 上下文业务层不依赖 Servlet
MongoDB 混合存储零侵入,渐进式采用
改 MyBatis 源码分页第一天解决的事用了十几年
Excel 模板报表用业务人员熟悉的工具
Activiti 任意流转不能改变框架时就找到"洞"绕过去

一句话:做到实时有据,修改即刻可查。

不追求架构漂亮,不追求技术先进,只追求——出了问题我能从代码快速定位到业务,业务人员能快速进入查到数据。

这个框架没有 Spring 的依赖注入,没有 MyBatis-Plus 的包装,但这是它的一个优点:每一行代码我都能说清来龙去脉,任何问题我都能从入口一步步追踪到数据库。

目录

  1. 框架全景图
  2. 十个决策的统一原则
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ 多态底层实现机制深度解析
  • C++ 多态底层实现原理:虚函数表与对象模型解析
  • 线段树学习笔记(C++)
  • 使用 Trae 集成 Claude Code 实现本地 AI 编程环境搭建
  • Android WebView 开发指南:AgentWeb 完整使用
  • ThreadLocal 原理、使用场景及内存泄漏问题详解
  • Alas 脚本碧蓝航线自动化配置指南
  • Linux 核心 IO 模型深析:非阻塞 IO 与多路转接实现
  • Unity VR 全景视频高分辨率播放性能优化方案
  • Linux 基础开发工具:Git 版本控制与 GDB 调试器详解
  • Java 重构实战:GitHub Copilot 上下文感知应用
  • MCP 插件配置指南:以 browser-tools-mcp 为例
  • 一切皆是映射:深入理解 DQN 的稳定性与收敛性
  • Python 中国节假日日历库使用指南:识别法定节假日与工作日
  • 飞书 OpenClaw 机器人 HTTP 401 Invalid Authentication 报错排查
  • 宜搭低代码高级认证:待办列表自定义页面实战指南
  • 使用 ClawdBot 快速搭建 Telegram 翻译机器人
  • Python 网页数据爬取实战教程
  • C++ 容器适配器与核心数据结构精解:栈、队列、Deque 底层实现与实战
  • 算法实战:双指针解决复写零问题

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online