# yyplatform-admin-boot **Repository Path**: sleepforests/yyplatform-admin-boot ## Basic Information - **Project Name**: yyplatform-admin-boot - **Description**: 一个脚手架的后端部分,SpringBoot服务。 包括B端API接口提供给yyplatform-vue3-element-admin使用。 使用JDK17、SpringBoot3、SpringDataJPA、Apache Shiro、JWT、SpringDoc等技术实现。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/sleepforests/yyplatform-admin-boot - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2024-09-12 - **Last Updated**: 2025-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1、项目介绍 这是一个脚手架项目,提供的功能如下: * 基础的B端API * 实现一套基于 RBAC 模型,实现细粒度的权限控制,涵盖接口方法和按钮级别; * 系统管理:用户管理、角色管理、菜单管理、部门管理、字典管理等功能; * 其他todo待补充; * 基础的C端API * 基于微信小程序的登录模块; * 其他todo待补充; ## 2、使用到的框架介绍 ### SpringBoot Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。 它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。 Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。 * 参考: * https://spring.io/projects/spring-boot * https://springdoc.cn/spring-boot/ ### SpringDataJPA Spring Data 是 Spring 提供的一个操作数据的框架,Spring Data JPA是 Spring Data 下的一个基于 JPA 标准的操作数据的模块。 JPA(Java Persistence API)是 Java 亲妈 Sun 公司提出的一套 Java 持久化规范。所谓规范,就是只定义标准,不提供实现。 JPA 的提出主要是为了整合市面上已有的 ORM 框架,比如说 Hibernate、EclipseLink 等。官方觉得你们搞框架可以,但不要乱搞,得按照我的标准来。 Spring Data JPA 只是一个抽象层,它上接 JPA 下接 ORM 框架,通过基于 JPA 的 Respository 接口极大地减少了 JPA 作为数据访问方案的代码量,简化了持久层开发并且屏蔽了各大 ORM 框架的差异。 总结一下就是: * JPA 是规范,统一了规范才便于使用。 * Hibernate 是 JPA 的实现,是一套成熟的 ORM 框架。 * Spring Data JPA 是 Spring 提出的,它增加了一个抽象层,用来屏蔽不同 ORM 框架的差异。 * 参考: * https://spring.io/projects/spring-data-jpa * https://spring.io/guides/gs/accessing-data-jpa ### Lombok ``` Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not-quite-java code. ``` Lombok是一个在Java开发中广泛使用的库,它主要用于减少样板代码的编写。 通过提供一系列注解,Lombok自动化了常见的Java对象模式,如getter/setter方法、构造函数、Builder模式、日志声明等。 它使代码更简洁、易于维护,同时还减少了错误的可能性。Lombok通过编译时注解处理器工作,不影响运行时性能。 * 参考: * https://projectlombok.org/ * [十分钟搞懂Lombok使用与原理](https://sites.google.com/site/javahuide9/brief/lombok-in-10-minutes) * [Java开发中用到的lombok是什么](https://docs.pingcode.com/ask/63690.html) ### SpringDoc&Knife4j 谈到API文档,那就绕不开大名鼎鼎的Swagger,但是你是否还听说过:OpenAPI,Springfox,Springdoc?你第一次看到这些脑瓜子是不是嗡嗡的? * [OpenAPI](https://www.openapis.org/) 是一个组织(OpenAPI Initiative),他们指定了一个如何描述HTTP API的规范(OpenAPI Specification)。既然是规范,那么谁想实现都可以,只要符合规范即可。 * [Swagger](https://swagger.io/) 它是SmartBear这个公司的一个开源项目,里面提供了一系列工具,包括著名的 swagger-ui。swagger是早于OpenApi的,某一天swagger将自己的API设计贡献给了OpenApi,然后由其标准化了。 * [Springfox](https://github.com/springfox/springfox) 是Spring生态的一个开源库,是Swagger与OpenApi规范的具体实现。我们使用它就可以在spring中生成API文档。以前基本上是行业标准,目前最新版本可以支持 Swagger2, Swagger3 以及 OpenAPI3 三种格式。但是其从 2020年7月14号就不再更新了,不支持springboot3,所以业界都在不断的转向我们今天要谈论的另一个库Springdoc,新项目就不要用了。 * [Springdoc](https://springdoc.org/index.html#getting-started) 算是后起之秀,带着继任Springfox的使命而来。其支持OpenApi规范,支持Springboot3,我们的新项目都应该使用这个。 * [knife4j](http://knife4j.net/) 增强springdoc的功能插件 * 参考 * https://springdoc.org/ * https://springdoc.org/index.html#getting-started * https://doc.xiaominfo.com/docs/quick-start * http://knife4j.net/ * [使用 Spring Doc 为 Spring REST API 生成 OpenAPI 3.0 文档](https://springdoc.cn/spring-rest-openapi-documentation/) * [秒懂SpringBoot之如何集成SpringDoc](https://shusheng007.top/2023/06/21/springdoc/) ### Apache Shiro Apache Shiro (发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大灵活的开源安全框架,提供认证、授权、会话管理以及密码加密等功能。 Apache Shiro 首要的目标是易于使用和理解。安全(相关的操作)有时很复杂很麻烦,不过这完全没必要,一个(安全)框架应该尽可能隐藏这其中的复杂性并提供一套简洁直观的 API 来简化开发人员在这方面的工作。 * 参考 * https://shiro.apache.org/index.html * [Apache Shiro 简介](https://leesire-doc.github.io/shiro/doc/introduction.html) * [Java开发 Shiro框架详解(轻松入门)](https://juejin.cn/post/6991664333314850853) ### JWT JWT的全称是Json Web Token。 是基于RFC 7519开放标准的,它定义了一种紧凑且独立的方式,用于在各方之间以 JSON 对象的形式安全地传输信息。 此信息可以用作验证和相互信任,因为它是经过数字签名的。 JWT 可以使用密钥(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。 * 参考: * https://github.com/auth0/java-jwt * [JSON Web Token 入门教程](https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html) * [JWT 基础概念详解](https://javaguide.cn/system-design/security/jwt-intro.html) * [JWT | 一分钟掌握JWT | 概念及实例](https://juejin.cn/post/7232550589964140602) ### modelmapper ModelMapper 是一个从对象到对象(object-to-object)的框架,能将 Java Bean(Pojo)对象从一种表现形式转化为另一种表现形式。它采用“通过约定来配置”的方式,自动匹配不同的对象映射,同时具备满足某些特殊需求的高级功能。 * 参考 * https://modelmapper.org/ * [使用ModelMapper的一次踩坑经历](https://juejin.cn/post/6844903678776705037) ### user-agent-utils Java库可用于实时解析HTTP请求或分析日志文件并收集有关用户代理的信息。 * 参考 * https://github.com/HaraldWalker/user-agent-utils * [UserAgentUtils使用](https://github.com/wangzhihaolighter/spring-boot-notes/blob/master/DOC/E.tool/user-agent-utils/UserAgentUtils.md) ### easy-captcha验证码 Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。 * 参考 * https://github.com/pig-mesh/easy-captcha ### freemarker FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 * 参考 * https://freemarker.apache.org/index.html * http://freemarker.foofun.cn/ ### druid Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 * 参考 * https://github.com/alibaba/druid * https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 ### easyexcel EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。 * 参考 * https://github.com/alibaba/easyexcel * https://easyexcel.opensource.alibaba.com/ ## 3、开发运行环境介绍 * MySQL * JDK 17 * Maven ## 4、项目启动 以B端API服务为例: * 数据库初始化 执行 sql/yyplatform-init.sql 脚本完成数据库创建、表结构和基础数据的初始化。 * 修改配置 application-dev.properties 修改MySQL连接配置; * 启动项目 执行 AdminAppRun.java 的 main 方法完成后端项目启动; 访问接口文档地址 http://localhost:8001/doc.html 验证项目启动是否成功。 ## 5、B端+C端工程地址 * B端:https://gitee.com/sleepforests/yuyue-platform-vue3 * C端:https://gitee.com/sleepforests/yuyue-platform-uniapp