引言:为什么要自己写一个Spring?
不少Ja va开发者学Spring时心里都会犯嘀咕:这框架内部到底是怎么运转的?
依赖注入、AOP、MVC、Tomcat容器……这些黑盒背后到底藏着什么门道?
为了彻底搞清楚这个问题,我们用一周时间从零搭建了一个功能完备的Ja va Web框架,并且在此基础上构建了一整套开发工具集——CodeStats。它可不是什么“玩具”框架,而是一个能真正投入实际使用的综合性开发平台。
代码量超过3万行,全部由AI生成,没有任何第三方依赖(除了JDBC驱动和jackson/json这类必要库)。
一、核心亮点
1. 自研Spring内核
IoC容器 + MVC + 依赖注入,全部手写实现
2. 嵌入式Tomcat
HTTP协议解析、请求响应封装、Servlet容器管理
3. 数据库连接池 + MyBatis风格Mapper
自研连接池 + 动态袋里实现ORM
4. 代码分析引擎
支持多语言代码统计与分析
5. AI Agent
支持Ollama和DeepSeek等多后端
6. 前端界面
原生HTML/CSS/JS,集成AI助手悬浮窗
二、技术栈一览
| 层级 | 技术 | 说明 |
|---|---|---|
| 后端核心 | Ja va 8+ | 自研IoC、MVC、Tomcat |
| 数据库 | JDBC + 自研连接池 | 支持MySQL、Oracle(可扩展) |
| ORM | 自研@Mapper动态袋里 | 类似MyBatis |
| 日志 | 自研日志框架 | Console/File/RollingFile,PatternLayout |
| 缓存 | Caffeine / ConcurrentHashMap | 统一Cache接口 |
| 前端 | 原生JS + HTML/CSS | 多iframe嵌入,悬浮助手 |
| AI | Ollama REST API + DeepSeek API | 支持流式响应 |
| 构建 | Ma ven | 无外部框架依赖 |
三、快速体验(操作步骤)
1. 环境准备
- JDK 8+
- Ma ven 3.6+
- MySQL(可选,不配置则使用内存表)
2. 获取代码
git clone https://gitee.com/zhouzuoli/code-stats.git
cd CodeStats
3. 配置数据库(可选)
修改src/main/resources/application.properties:
db.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
db.username=root
db.password=123456
db.maxActive=10
db.maxIdle=5
db.minIdle=2
不配置则自动使用内存表运行演示模块。
4. 启动项目
mvn clean compile
mvn exec:ja va -Dexec.mainClass="com.omni.Bootstrap"
或直接运行Bootstrap.ja va的main方法。
启动日志示例:
:: Omni Framework :: (v1.0)
Tomcat started in 1234 ms
Access https://localhost:28080/omni/demo/index.html
5. 访问Web界面
浏览器打开:
