# validateCustomize **Repository Path**: XuGang6713/validate-customize ## Basic Information - **Project Name**: validateCustomize - **Description**: 支持两种类型的校验: 1. Spring Bean Validation(如 @Email) 2. 自定义注解校验(如 @Required, @MaxLength, @ConditionalRequired) - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-10 - **Last Updated**: 2025-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # validateCustomize ## 介绍 支持两种类型的校验: 1. Spring Bean Validation(如 @Email) 2. 自定义注解校验(如 @Required, @MaxLength, @ConditionalRequired) ## 软件架构说明 ### 一、整体架构概述 该项目是一个基于 Spring Boot 的 Java Web 应用程序,主要功能是实现自定义参数校验逻辑。它结合了 Spring 标准验证(JSR-303)与开发者自定义的注解验证机制,提供了一个统一、灵活且可扩展的数据校验框架。 ### 二、技术栈概览 | 层级 | 技术/工具 | |------------|-----------------------------------------------| | 后端框架 | Spring Boot 3.0.0 | | 编程语言 | Java 17 | | 构建工具 | Maven | | 验证支持 | jakarta.validation(标准验证)、自定义注解验证 | | 异常处理 | 全局异常处理器(@RestControllerAdvice) | | 单元测试 | JUnit 5 + SpringBootTest | ### 三、包结构与模块划分 ![输入图片说明](src/main/resources/image/threeimage.png) ### 四、核心模块说明 #### 1. 控制器层(Controller Layer) 类名:ValidateController 职责: 提供 REST API 接口 /validate/validate。 调用 ValidationUtil.validateAndThrowIfFail(request) 执行校验。 路径:com.xg.controller.ValidateController #### 2. 数据传输对象(Model / DTO Layer) 类名:UserRequest 职责: 定义请求参数模型。 使用标准和自定义注解声明字段约束。 路径:com.xg.model.dto.UserRequest #### 3. 枚举类型(Enums Layer) 类名:CompareOperator 职责: 定义比较操作符(EQ, GT, LT 等),用于 @ConditionalRequired 条件判断。 路径:com.xg.model.enums.CompareOperator #### 4. 自定义注解(Validator Annotation Layer) 注解类: @Required:标记字段必须非空。 @MaxLength:限制字符串最大长度。 @ConditionalRequired:条件必填字段。 作用:通过反射在运行时对字段进行业务规则校验。 路径:com.xg.validator.annotation.* #### 5. 工具类(Validator Util Layer) 类名:ValidationUtil 职责: 实现自定义字段校验逻辑。 统合 Spring 标准验证和自定义验证,并在失败时抛出 ValidationException。 路径:com.xg.validator.util.ValidationUtil #### 6. 异常处理(Validator Exception Layer) 类名: ValidationException:封装字段级别的验证错误信息。 GlobalExceptionHandler:捕获并返回结构化异常响应。 路径: com.xg.validator.exception.ValidationException com.xg.validator.exception.GlobalExceptionHandler #### 7. 配置类(Configuration Layer) 类名:ValidationConfig 职责: 注册 Spring 容器中的全局 Validator Bean。 路径:com.xg.config.ValidationConfig #### 8. 主启动类(Main Application) 类名:ValidateApplication 职责: Spring Boot 应用入口。 路径:com.xg.ValidateApplication ### 五、核心流程图(调用链路) ![输入图片说明](src/main/resources/image/fveimage.png) ### 六、关键设计模式与原则 #### 1. 组合使用标准验证与自定义验证 利用 Spring 内置 jakarta.validation 做基础校验。 补充业务需求所需的条件校验,满足复杂场景。 #### 2. 自定义注解 + 反射验证 利用 Java 注解和反射机制,在运行时动态解析字段约束。 实现了高内聚低耦合的设计,便于后续扩展新的校验规则。 #### 3. 统一异常处理机制 使用 @RestControllerAdvice 实现全局异常捕获,提升接口返回的一致性。 分离异常处理逻辑与业务逻辑,增强可维护性。 #### 4. 分层架构清晰 MVC 架构明显,各组件职责明确,便于协作开发与后期维护。 ### 七、测试支持 单元测试类:ValidateControllerTest 测试框架:JUnit 5 + SpringBootTest 测试目标:验证控制器能否正确触发参数校验流程。 ### 八、构建与部署配置 Maven 管理依赖:pom.xml 中引入了 Spring Boot、Lombok、Jackson、JUnit 等常用库。 Java 版本要求:JDK 17。 启动类:ValidateApplication 启动配置:application.properties 设置服务端口为 8080。 ### 九、总结 该项目采用典型的 Spring Boot 分层架构,围绕“参数校验”这一核心功能展开,具备以下特点: ✅ 清晰的模块划分 ✅ 支持标准与自定义验证 ✅ 易于扩展新的校验规则 ✅ 统一的异常处理机制 ✅ 完善的测试覆盖