# JfireBoot
**Repository Path**: eric_ds/jfire-boot
## Basic Information
- **Project Name**: JfireBoot
- **Description**: 用于基于Jfire整套体系快速创建Web应用
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-06-19
- **Last Updated**: 2025-12-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JfireBoot
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://openjdk.org/projects/jdk/21/)
基于 Jfire 体系的快速 Boot 应用框架。引入 JfireBoot,可以快速构建高性能的 Web Java 应用。
## 特性
- **高性能** - 基于 NIO/AIO 的非阻塞 I/O,轻量级设计,启动快速
- **声明式路由** - 基于 `@Path` 注解的简洁路由定义,支持 RESTful 风格
- **智能参数解析** - 自动识别 JSON、URL-Form、MultiPart 等多种请求格式
- **文件上传** - 原生支持 MultiPart 文件上传和二进制数据处理
- **链路追踪** - MDC 集成日志链路追踪,支持 `@TraceId` 注解
- **OpenAPI 网关** - 基于 ServiceId 的统一 API 入口和服务路由
- **SSL/TLS 支持** - 支持 HTTPS 安全连接
## 快速开始
### Maven 依赖
```xml
cc.jfire
JfireBoot
1.0
```
### 启动服务器
```java
// 创建应用上下文
ApplicationContext context = new ApplicationContext();
// ... 注册 Bean
// 启动服务器
HttpAppServer.start(8080, context);
// 或者指定静态资源目录
HttpAppServer.start(8080, context, "src/main/resources/static");
```
### 定义路由
```java
@Resource
public class UserService {
// 简单路由
@Path("/user/list")
public List list() {
return userRepository.findAll();
}
// RESTful 路由 - 路径参数
@Path("/user/${id}/detail")
public User detail(int id) {
return userRepository.findById(id);
}
// JSON 请求体
@Path("/user/add")
public Result add(User user) {
userRepository.save(user);
return Result.success();
}
// 文件上传
@MultiPartPost
@Path("/file/upload")
public Result upload(List files) {
files.forEach(this::saveFile);
return Result.success();
}
// URL Form 表单
@UrlFormPost
@Path("/user/login")
public Result login(String username, String password) {
return authService.login(username, password);
}
// 链路追踪
@TraceId
@Path("/order/create")
public Order createOrder(Order order) {
return orderService.create(order);
}
}
```
## 核心模块
```
cc.jfire.boot
├── common/ # 通用工具模块
│ ├── TraceId.java # 链路追踪注解
│ ├── EnhanceTraceId.java # 链路追踪增强
│ └── MdcSupport.java # MDC 日志支持
│
├── http/ # HTTP 处理模块
│ ├── HttpAppServer.java # HTTP 服务器启动类
│ ├── HttpRequestExtend.java# HTTP 请求扩展
│ ├── DataJsonToRespEncoder.java # JSON 响应编码
│ └── BinaryPart.java # 二进制上传处理
│
└── forward/ # 请求转发模块
├── path/ # 路径路由
│ ├── Path.java # 路径注解
│ ├── PathRequest.java # 路径请求处理
│ ├── RestfulMatch.java # RESTful 匹配
│ ├── UrlFormPost.java # URL Form 注解
│ └── MultiPartPost.java# MultiPart 注解
│
└── openapi/ # OpenAPI 网关
├── OpenApiForward.java # 网关转发器
├── ServiceId.java # 服务ID注解
└── ServiceRequest.java # 服务请求处理
```
## 注解说明
| 注解 | 目标 | 说明 |
|-----|------|------|
| `@Path` | 方法 | 声明 HTTP 路由路径,支持 `${param}` 占位符 |
| `@TraceId` | 方法 | 启用链路追踪 |
| `@ServiceId` | 方法 | 声明 OpenAPI 服务标识 |
| `@JsonAttribute` | 参数 | 指定 JSON 属性映射名称 |
| `@UrlFormPost` | 方法 | 处理 URL Form 编码请求 |
| `@MultiPartPost` | 方法 | 处理 MultiPart 文件上传 |
## 请求处理流程
```
客户端请求
↓
HTTP 协议解析 (HttpRequestDecoder)
↓
OPTIONS 请求处理 (OptionsProcessor)
↓
静态资源处理 (ResourceProcessor)
↓
自定义前置处理器
↓
路由转发处理 (PathRequestForwardProcessor)
├── 精确匹配 → 调用业务方法
├── RESTful 匹配 → 参数提取 → 调用业务方法
└── 无匹配 → 404 处理
↓
JSON 响应编码 (DataJsonToRespEncoder)
↓
HTTP 响应编码 (HttpRespEncoder)
↓
SSL 加密 (可选)
↓
客户端响应
```
## 参数解析规则
JfireBoot 会根据方法参数类型自动选择解析策略:
- **简单类型** (int, String, boolean 等) - 从请求参数或 JSON 属性中提取
- **复杂对象** - JSON 反序列化
- **HttpRequest** - 注入原始请求对象
- **Pipeline** - 注入处理管道
- **List** - 文件上传列表
- **Enum** - 自动转换为枚举类型
## 技术栈
- **Java 21**
- **Jnet** - 高性能网络库 (基于 AIO)
- **Dson** - JSON 序列化
- **jfire-core** - 核心容器框架
- **Log4j 2** - 日志框架
## 构建
```bash
mvn clean package
```
## 许可证
本项目采用 [GNU Affero General Public License v3.0](https://www.gnu.org/licenses/agpl-3.0) 许可证。
## 作者
- jfirer (495561397@qq.com)