跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具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/9/1063 浏览
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. 十个决策的统一原则

更多推荐文章

查看全部
  • Linux 环境下 OpenClaw 安装、初始化与 Web UI 配置指南
  • 基于强化学习的无标记 RAG 增强型 LLM 智能故障诊断
  • LiuJuan20260223Zimage 镜像结构解析:目录布局、日志路径与模型权重规范
  • Ubuntu Server 22.04 LTS 系统安装教程
  • 微服务链路追踪实战:SkyWalking 与 Zipkin 架构对比及性能优化
  • 大模型 Offload 技术实现低显存推理优化
  • SPI 通信读取 255 问题排查与 MISO 线状态分析
  • Python 常见数据结构详解
  • Dify 工作流发布为 MCP Server 实战:第三方工具无缝对接
  • 基于 AnythingLLM 与 Ollama 构建本地私有 AI 知识库
  • 前端如何利用 AI 设计技能独立完成产品设计与开发流程
  • SkyWalking Kafka 与 RabbitMQ 消息链路追踪实战
  • VR + 具身智能 + 人形机器人:通往现实世界的智能接口
  • Python 数据分析、可视化与机器学习实战脚本精选
  • Element UI Table 设置 max-height 后右侧滚动条空白占位处理
  • Opencode:自带沙箱的开源代码解释器,赋能 DeepSeek 本地编程
  • Java 中间件:Dubbo 服务降级(Mock 机制)
  • 6 款网络安全模拟与可视化工具网站推荐
  • AI 应用层革命:软件的终结与智能体的崛起
  • AI+ 游戏开发:使用 DeepSeek 构建贪吃蛇游戏

相关免费在线工具

  • 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