# java-pangju-framework-spring-boot-starter
**Repository Path**: pangju666/java-pangju-framework-spring-boot-starter
## Basic Information
- **Project Name**: java-pangju-framework-spring-boot-starter
- **Description**: java 框架 Spring Boot Starter
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-06-12
- **Last Updated**: 2025-11-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[中文](README.md) | [English](README_EN.md)
# Pangju Framework Spring Boot Starter
Pangju Framework 是一个面向 Spring Boot 的多模块扩展框架,聚焦于 Web 增强、数据存储、日志治理、加密安全、验证与测试等场景。通过一组可独立启用的
Starter 与自动配置,帮助你快速构建高质量的分布式与高性能应用。
## 特性总览
- Web 增强:全局异常、参数绑定(含枚举解析)、请求/响应加密、接口签名、幂等、限流、统一日志。
- 数据存储:MongoDB 动态多数据源、MyBatis‑Plus 扩展与拦截器、Redis 多数据源与模板增强。
- 日志治理:基于 Disruptor 的高性能异步日志、Kafka 分发、MongoDB 持久化存储。
- 校验与安全:自定义验证注解、注解式请求体/字段加解密。
- 测试支持:常用测试工具集成、Spock 与 Spring 测试生态融合。
## 模块概览
- `pangju-framework-autoconfigure`:核心自动配置,其他模块基础依赖。
- `pangju-framework-web-spring-boot-starter`:Web 层增强(异常、参数绑定、拦截器等)。
- `pangju-framework-web-crypto-spring-boot-starter`:请求参数与响应体加密(AES/RSA)。
- `pangju-framework-web-log-spring-boot-starter`:统一 Web 日志,支持 Disruptor/Kafka/MongoDB。
- `pangju-framework-web-validation-spring-boot-starter`:Web 请求字段级参数校验增强。
- `pangju-framework-data-mongodb-spring-boot-starter`:基于 Spring Data MongoDB 的增强与动态多数据源。
- `pangju-framework-data-mybatis-plus-spring-boot-starter`:MyBatis‑Plus 自动配置与拦截器扩展。
- `pangju-framework-data-redis-spring-boot-starter`:Redis 自动配置与增强模板。
- `pangju-framework-validation-spring-boot-starter`:通用验证注解与自动配置。
- `pangju-framework-test-spring-boot-starter`:测试工具整合(JUnit、JSON 断言等)。
- `pangju-framework-spock-test-spring-boot-starter`:Spock + Spring 测试集成。
- `pangju-framework-spring-boot-starter`:统一基础能力与依赖管理。
## 安装与使用
在你的 Spring Boot 项目中引入 BOM 与所需 Starter(建议使用 Maven):
```xml
io.github.pangju666
pangju-framework-bom
1.0.0
pom
import
```
```xml
io.github.pangju666
pangju-framework-web-spring-boot-starter
io.github.pangju666
pangju-framework-web-crypto-spring-boot-starter
io.github.pangju666
pangju-framework-web-log-spring-boot-starter
io.github.pangju666
pangju-framework-data-mongodb-spring-boot-starter
io.github.pangju666
pangju-framework-data-redis-spring-boot-starter
io.github.pangju666
pangju-framework-data-mybatis-plus-spring-boot-starter
```
## 快速开始
示例:在 Controller 中使用加密、幂等、限流与签名能力。
```java
import io.github.pangju666.framework.autoconfigure.web.crypto.advice.DecryptRequestBody;
import io.github.pangju666.framework.autoconfigure.web.crypto.advice.EncryptResponseBody;
import io.github.pangju666.framework.autoconfigure.web.crypto.resolver.EncryptRequestParam;
import io.github.pangju666.framework.autoconfigure.web.idempotent.annotation.Idempotent;
import io.github.pangju666.framework.autoconfigure.web.limit.annotation.RateLimit;
import io.github.pangju666.framework.autoconfigure.web.signature.annotation.Signature;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/echo")
@RateLimit(qps = 10)
@Signature(appId = {"app1"})
public String echo(@EncryptRequestParam String text) {
return text; // 加密请求参数将被自动解密
}
@PostMapping("/submit")
@Idempotent(key = "#payload.id")
@EncryptResponseBody // 返回值将自动加密
public Object submit(@DecryptRequestBody @RequestBody DemoPayload payload) {
return payload;
}
}
```
常用配置示例(`application.yml`):
```yaml
# Web 增强:异常处理与参数绑定(时间戳自动转 Date/LocalDate/LocalDateTime)
pangju:
web:
advice:
binding: true
exception: true
# 统一 Web 日志(默认启用 Disruptor 异步链路)
log:
enabled: true
# 接口签名:为不同 appId 配置密钥
signature:
secret-keys:
app1: your-secret-key-1
app2: your-secret-key-2
spring:
data:
mongodb:
dynamic:
primary: mongodb-primary
databases:
mongodb-primary:
uri: mongodb://user:password@localhost:27017/primary_db
auto-index-creation: true
mongodb-secondary:
uri: mongodb://user:password@192.168.1.100:27017/secondary_db
auto-index-creation: true
mongodb-tertiary:
host: 192.168.1.101
port: 27017
database: tertiary_db
username: user
password: password
auto-index-creation: false
```
> 说明:
> - Web 日志将根据环境自动选择组件:存在 `KafkaTemplate` 时可启用 Kafka 发送;存在 `MongoTemplate` 时可启用 MongoDB
接收;否则默认使用 Disruptor 异步处理。
> - MongoDB 动态数据源支持为不同 `Repository` 指定数据源(见 `@DynamicMongo` 注解与自动配置)。
## 关键能力与用法
- 枚举参数解析:自动解析请求参数中的枚举值,支持必填校验与错误提示。
- 请求/响应加密:通过注解声明字段或响应体加密,支持 `AES-256` 与 `RSA`,编码支持 `Base64/Hex`。
- 接口签名拦截:在方法或类上标注 `@Signature`,从参数/请求头中提取签名进行校验,支持时效与算法配置。
- 幂等验证:在方法上使用 `@Idempotent`,支持内存与 Redis 实现,防重复提交。
- 限流拦截:在方法上使用 `@RateLimit`,支持基于 Redis 或 Resilience4J 的限流实现,按 IP 或自定义维度限流。
- 动态 MongoDB:基于 `spring.data.mongodb.dynamic` 前缀配置多个数据源并自动选择主数据源,生成
`MongoTemplate/GridFsTemplate` 等 Bean。
## 版本与兼容
- JDK 17+(建议)
- Spring Boot 3.x(建议 3.2+)
- 可选:Kafka、MongoDB、Redis 依赖按需添加
## 变更日志
详见 [CHANGELOG.md](CHANGELOG.md)
## 许可证
本项目基于 [Apache License 2.0](LICENSE) 开源发布,可自由商用与修改(需保留版权与许可声明)。