自研全栈Java框架 CodeStats
本文为技术推广/项目引流文,基于真实开源项目撰写。
项目地址:https://gitee.com/zhouzuoli/code-stats/
作者:Omni Team

📌 引言:为什么自己写一个Spring?
许多Java开发者学习Spring时都会好奇——框架到底是怎么工作的? 依赖注入、AOP、MVC、Tomcat容器……这些黑盒背后藏着什么?

为了回答这个问题,我们花了一周时间,完全从零实现了一个功能完备的Java Web框架,并在此基础上构建了一整套开发工具集——CodeStats。它不仅仅是一个“玩具”框架,而是一个可以投入实际使用的综合性开发平台,包含:

🔷 自研IoC容器 + MVC + 嵌入式Tomcat

🗄️ 数据库客户端(MySQL元数据浏览、ER图、SQL编辑器)

📊 代码分析引擎(行数统计、依赖分析、Git忽略)

🤖 AI Agent(集成Ollama/DeepSeek,支持本地大模型)

📂 目录管理(文件浏览器、在线编辑、ZIP打包)

🧠 项目助手(内置知识库 + n-gram 降级回答)

⚡ 前端科技感界面(玻璃拟态、多标签iframe架构)

代码量:超过3万行,全部AI实现,无任何第三方依赖(除JDBC驱动和jackson/json等必要库)。

🚀 一、核心亮点:从零造轮子的极致成就感
1. 自研 Spring 内核
IoC容器:扫描包 -> 实例化 -> 依赖注入(支持@Autowired、@Qualifier、@Primary)

MVC:@RequestMapping、@RequestParam、@PathVariable、@ResponseBody,参数解析支持JSON自动绑
AOP预留:基于责任链的 Pipeline 模式(可扩展)

2. 嵌入式Tomcat
自研Connector(NIO线程池)、Pipeline-Valve责任链、WebappClassLoader类隔离

支持 Servlet 动态加载、Filter 链、Session 管理

3. 数据库连接池 & MyBatis风格Mapper
SimpleDataSource:阻塞队列 + Semaphore 限流,支持最小/最大空闲、连接验证

@Mapper + @Select 注解,动态代理执行SQL,自动结果集映射

4. 代码分析引擎
多线程递归扫描文件,支持扩展名过滤、排除路径、.gitignore

语言识别(30+种),复杂度估算(关键词计数)

输出 JSON/CSV/HTML 报告,支持文件合并(将源码合并为一个TXT)

5. AI Agent 多后端
本地 Ollama(deepseek-r1:7b 等)

云端 DeepSeek API

自定义 OpenAI 兼容接口

项目助手:内置 JSON 知识库(10000+ 问答对) + 3-gram 字符级语言模型降级

6. 前端界面
纯 HTML/CSS/JS,科技感玻璃设计

数据库树形导航、代码分析表格导出、Agent 对话窗口

独立项目助手悬浮球 – 可在任何页面提问项目相关问题

🛠️ 二、技术栈一览
层级  技术 说明
后端核心    Java 8+    自研 IoC、MVC、Tomcat
数据库 JDBC + Hikari(自研连接池)   支持 MySQL、Oracle(可扩展)
ORM 自研 @Mapper 动态代理    类似 MyBatis
日志  自研日志框架 支持 Console/File/RollingFile,PatternLayout
缓存  Caffeine / ConcurrentHashMap   统一 Cache 接口
前端  原生 JS + HTML/CSS   多 iframe 嵌入,悬浮助手
AI  Ollama REST API + DeepSeek API 支持流式(预留)
构建  Maven(项目可见 pom 结构) 无外部框架依赖
🖼️ 三、运行截图(预览)
(在真实知乎文章中可贴图,这里用文字描述)

主页:顶部导航栏(项目介绍、数据库、目录管理、代码分析、Agent、API调试)

数据库模块:左侧表列表,右侧属性/数据/图/查询四个标签页,支持 SQL 自动补全、执行

代码分析:表单配置根目录、扩展名、排除路径,点击分析后实时展示表格和摘要,支持 CSV 导出

AI Agent:部署页检查 Ollama 状态、下载模型;聊天页支持多后端切换,连续对话

项目助手:右下角悬浮按钮,点击展开聊天窗口,可点击文章中的高亮关键词自动提问

📦 四、如何快速体验(操作步骤)
1. 环境准备
JDK 1.8+

MySQL 5.7+(可选,不配置数据库时框架会自动使用内存表)

Maven 3.6+

(可选)Ollama:下载安装 ollama.com,并拉取模型 ollama pull deepseek-r1:7b

2. 获取代码 git clone https://gitee.com/zhouzuoli/code-stats.git
bash
 
cd CodeStats
3. 配置数据库(可选)
修改 src/main/resources/application.properties:

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
如果不配置,框架会自动使用内存表(H2模拟)运行演示模块。

4. 启动项目
bash
mvn clean compile
mvn exec:java -Dexec.mainClass="com.omni.Bootstrap"
或者直接运行 Bootstrap.java 的 main 方法。

启动日志示例:

text
:: Omni Framework :: (v1.0)
Tomcat started in 1234 ms
Access http://localhost:28080/omni/demo/index.html
默认端口 28080,上下文路径 /omni(可在 properties 中修改)。

5. 访问 Web 界面
打开浏览器访问:
http://localhost:28080/omni/demo/index.html

点击顶部「数据库」:需要先配置数据源(点击「管理」->「数据源配置」,添加 MySQL 连接)

点击「代码分析」:填写项目根目录(如 D:/workspace/CodeStats),扩展名 java,点击分析

点击「Agent」:先检查 Ollama 状态,再下载模型,即可对话

点击「项目介绍」:左侧导航栏可查看各模块详细文档,高亮关键词可点击提问

6. 使用项目助手
页面右下角悬浮按钮 🤖 点击展开聊天窗口

直接输入问题,或点击快速问题按钮

在项目介绍页面,任意高亮关键词(如“IoC”、“Pipeline”)点击即可自动提问

🧪 五、进阶玩法:二次开发 & 扩展
1. 新增 Controller
java
@Controller
@RequestMapping("/demo")
public class MyController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(@RequestParam("name") String name) {
        return "Hello " + name;
    }
}
2. 新增 Mapper
java
@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User selectById(@Param("id") int id);
}
3. 扩展 AI 后端
实现 AIChatService 中的新分支,或通过配置文件切换。

4. 自定义代码分析规则
修改 LanguageSpec 添加新语言注释规则。

📢 六、总结与引流
CodeStats 是一个完全自研的全栈Java项目,不仅展示了从零实现 Spring + Tomcat 的核心原理,还集成了数据库工具、代码分析、AI 助手等实用功能。

如果你想:

🔍 深入理解 IoC 容器、MVC 原理、Tomcat 类加载机制

🛠️ 学习 连接池设计、动态代理实现 Mapper、Pipeline 责任链

🤖 了解 Ollama 本地大模型接入、知识库 + n-gram 降级方案

📈 打造自己的 代码统计工具 和 文件管理器

那么 CodeStats 是一份绝佳的学习范本。

如何获取完整项目?
GitHub 仓库: https://gitee.com/zhouzuoli/code-stats.git (请替换为真实地址)

一键 Star ⭐ 支持我们,持续更新文档和视频教程。

欢迎 PR / Issue,一起完善这个“Java 全栈修炼手册”。

如果本文对你有帮助,点赞+收藏+转发,让更多人看到从零造轮子的魅力!

附录:项目目录结构(核心)
text
CodeStats/
├── src/main/java/com/omni/
│   ├── Bootstrap.java                # 启动类
│   ├── business/                     # 业务模块
│   │   ├── assistance/               # 助手模块(Agent、代码分析、目录管理、数据库客户端)
│   │   ├── datasource/               # 数据源管理
│   │   └── common/                   # 公共模型(n-gram等)
│   ├── framework/                    # 自研框架核心
│   │   ├── spring/                   # IoC + MVC
│   │   ├── tomcat/                   # 嵌入式Tomcat
│   │   ├── jdbc/                     # JdbcTemplate + 连接池
│   │   ├── mybatis/                  # Mapper 代理
│   │   ├── codestats/                # 代码分析引擎
│   │   ├── log/                      # 日志框架
│   │   ├── cache/                    # 缓存抽象
│   │   └── v4j/                      # 简单 Vue-like 前端框架
│   └── run/                          # 各种 Demo
└── webapps/demo/                     # 前端页面(HTML/CSS/JS)
    ├── index.html                    # 主框架页
    ├── db/                           # 数据库客户端
    ├── code/                         # 代码分析
    ├── files/                        # 目录管理
    ├── agent/                        # AI Agent
    └── docs/                         # 项目介绍
✅ 操作步骤总结(快速上手)
克隆代码 → git clone ...

配置 MySQL(可选) → 修改 application.properties

启动主类 Bootstrap.main()

访问 http://localhost:28080/omni/demo/index.html

数据库模块:先进入「数据源管理」新增 MySQL 数据源,然后切回「数据库」标签页选择数据源

AI Agent:需要先安装 Ollama,拉取模型,然后在页面点击检查状态 -> 下载 -> 对话

项目助手:直接点击右下角悬浮按钮使用

界面:


写在最后:这个项目耗费了大量精力,但每一行代码都让我们更深刻理解了 Java 生态。如果你也热爱造轮子,不妨 Star 收藏,未来我们会逐步开放更多模块的讲解文章和视频。让我们一起,探索技术的本质!
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐