{"repo":"AirPowerTeam/AirPower4J","free":true,"listed":false,"github":"https://github.com/AirPowerTeam/AirPower4J","clone":"git clone https://github.com/AirPowerTeam/AirPower4J.git","description":"🔥🔥🔥AirPower4J是一个基于 Java17、SpringBoot3.x、JPA&MySQL 的后端开发脚手架，其中包含了一些 RBAC、请求验证、CURD封装、异常处理、多租户SaaS、加解密与安全、WebSocket等模块，以满足日常开发的快捷、稳健、标准化等要求。","language":"Java","stars":95,"topics":["java","jpa","spring-boot","api","backend","oauth2"],"license":"MIT","category":"auth-billing-email","readme_excerpt":"4J GitHub / Gitee / Maven 📖 一、这是个什么项目 为了满足开发标准化、工程化、系统化等等需求，我们设计并开发了一个基于 Java17 、 SpringBoot3.x 、 JPA&MySQL 的后端开发脚手架，其中包含了一些 RBAC 、 请求验证 、 CURD封装 、 异常处理 、 多租户SaaS 、 加解密与安全 、 WebSocket 等模块，以满足日常开发的快捷、稳健、标准化等要求。 当然， 如果你对全栈感兴趣，也可以和我们的 @airpower/web （Github/Gitee） 一起玩耍， @airpower/web 是一个基于 Vue3 / TypeScript / ElementPlus / Vite 等技术栈的一个基础开发脚手架， AirPower4J 和 @airpower/web 的联合可以为你的全栈之路增加另外一份很不一样的开发体验。 🔑 二、如何使用(初始化)? 你可以使用 maven 来引入这个依赖包： 💐 三、项目架构 1. 环境变量说明 我们使用了 JPA 的自动初始化数据库 ddl-auto: create-drop 模式，所以你在此项目中看不到SQL文件。 所以在初始化代码库完成后只需要先创建数据库，并设置 utf8mb4 0900 ai ci 字符集。 接下来在环境变量中配置 ddl-auto: create-drop 即可。 请注意，生产环境请勿使用这种方式。 2. 基本架构说明 我们使用标准的 Controller / Service / Repository 架构，原则上不涉及 EO / VO / DTO 等，整个项目使用 Entity 作为数据结构。 一些比较特殊的需求除外。 3. 注解 我们提供了一系列的注解： 3.1 @Api 标记为 API 控制器方法，等同于 @RequestMapping + @RestController 的整合。 3.2 @Description 类或属性的文案，将显示在错误信息、验证信息等处。 3.3 @Desensitize 与 @DesensitizeIgnore 标记脱敏字段和不脱敏的接口。 3.4 @Export 标记为导出列，可配置导出列的数据类型。 3.5 @ReadOnly 可为属性标记 @ReadOnly 表示该属性不参与控制器修改。 3.6 @Extends 标记控制器需要从父类控制器中继承或排除哪些方法。 3.7 @Search 属性本身可参与强匹配搜索，可通过 @Search 注解标记为可模糊搜索的属性。 3.8 @Dictionary 标记为字典属性，可使用下方 4 中的枚举字典接口的实现类。 4. 枚举字典 枚举字典需要实现 IDictionary 接口，即可使用 3.9 中的注解对属性进行标记，会自动进行判断和翻译。 5. RootModel 超类模型 所有参与API数据交互的部分都需要继承 RootModel , 一切需要入库的数据都需要继承 RootEntity 。 6. API 控制器超类 和 CURD 控制器 所有控制器均需要继承 ApiController ，其中，如果是数据库相关的控制器，需要继承 CurdController 。 同时，如果是 Curd 相关业务的业务，可以继承和实现 CurdService 和 ICurdRepository 7. 自定义异常 自定义异常需要实现 IException 接口，即可使用异常的快捷抛出等方法。 8. 标准树 实现了 ITree 的类都可实现标准的树结构","default_branch":null,"files":null,"tree":[],"storefront":"/r/AirPowerTeam","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/AirPowerTeam/AirPower4J/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}