# lingxiao **Repository Path**: jastar-wang/lingxiao ## Basic Information - **Project Name**: lingxiao - **Description**: 凌霄,象征开发速度直抵云端,致力于做一个小而全的多功能脚手架,集成在实际工作中常用的组件及配置,拎包入住,开箱即用。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/jastar-wang/lingxiao - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-03-03 - **Last Updated**: 2025-11-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

凌霄

快速集成开发脚手架

jitpack release jdk license process build

----------------------------------------------- ## 使命 登九天而朝昆仑,观四海于须臾,取凌霄之迅捷与明鉴之洞察。凌霄,象征开发速度直抵云端,致力于做一个快速开发的多功能脚手架,集成在实际工作中常见的组件及配置,拎包入住,让我们更加专注于业务需求的实现。 > Tips:与 jefw 不同的是,jefw 是一个通用性的工具套件,更偏向底层;而凌霄则是基于前者的更高层次封装,更靠近于业务。 ## 介绍 目前已支持的特性如下: - [x] 集成 `MyBatis Plus`框架,包含常用配置 - [x] 集成 `springdoc` 和 `knife4j` 接口文档 - [x] 集成 `flyway` 数据库脚本管理 - [x] 集成`Redis`缓存服务 - [x] 集成**对象存储**服务 - [x] 集成**发送短信**服务 - [x] 集成**发送邮件**服务 - [x] 集成**微信平台**服务,包括微信公众号/小程序开发、微信支付等 - [x] 提供通用的注解、常量、枚举、基类、工具类等 - [x] 提供防抖防接口重复提交的功能 - [x] 提供全局异常捕获处理的功能 - [x] 提供全局打印请求日志的功能 ## 快速开始 (1)首先在项目的`pom.xml`中引入仓库源: ```xml jitpack.io https://jitpack.io ``` (2)如果你本地`maven`的`settings.xml`配置了阿里云的仓库源(没有请跳过)如下: ```xml aliyunmaven * 阿里云公共仓库 https://maven.aliyun.com/repository/public ``` 需要把`*`修改为`*,!jitpack.io`或者`central` ,否则所有依赖会始终从阿里云仓库加载,导致加载失败。 (3)引入本项目依赖: ```xml com.jastar-wang lingxiao ${lingxiao.latestVersion} ``` (4)在你的`application.yml`中导入配置: ```yaml spring: profiles: include: lingxiao ``` > Tips:配置文件的加载顺序为:active > include > main。因此,如果你想覆盖 lingxiao 的默认配置,可以在你的项目的激活配置文件中(如 application-dev.yml )添加对应配置即可。 ### 配置及使用`MyBatis Plus` 1. 在启动类上配置`@MapperScan("com.xxx.**.mapper")` 2. 在`resources/db/mapper`文件夹中创建`XxxMapper.xml`文件 ### 配置及使用`Spring Doc` 1. 在主配置文件中添加如下配置: ```yaml spring: application: name-cn: 系统中文名称 ``` 2. 生产环境关闭此接口文档配置: ```yaml springdoc: api-docs: enabled: false swagger-ui: enabled: false knife4j: enable: false production: true ``` ### 配置及使用`Flyway` 在`resources/db/migration`目录下放置好对应的`SQL`脚本文件即可,注意遵循`flyway`的命名规则。 ### 配置及使用`Redis` 在配置文件中添加如下配置: ```yaml spring: data: redis: host: localhost port: 6379 database: password: ``` ### 配置及使用`对象存储`服务 参考 [jefw](https://gitee.com/jastar-wang/jefw/wikis/%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7/%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8/%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8) 框架的配置 ### 配置及使用`发送短信`服务 参考 [jefw](https://gitee.com/jastar-wang/jefw/wikis/%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7/%E7%9F%AD%E4%BF%A1%E7%BB%84%E4%BB%B6/%E7%9F%AD%E4%BF%A1%E6%9C%8D%E5%8A%A1) 框架的配置 ### 配置及使用`发送邮件`服务 在配置文件中添加如下配置: ```yaml spring: mail: host: smtp.your-domain.com username: noreply@your-domain.com password: your-password port: 587 properties: mail: # debug: true smtp: auth: true ssl: # enable: true checkserveridentity: false trust: "*" starttls: enable: true ``` 在类中注入`EmailService`即可调用,若需要在邮件主题中自动加入签名(类似于短信的【XX】签名),则只需要配置以下内容: ```yaml jefw: lingxiao: email: enable-subject-sign: true sign-name: ${spring.application.name-cn} ``` ### 配置及使用`微信平台`服务 > 注意:该服务依赖Redis模块,用于缓存相关的凭证 1. 在配置文件中添加如下配置: ```yaml jefw: weixin: enabled: true mp: app-id: 小程序AppId app-secret: 小程序AppSecret oa: app-id: 公众号AppId app-secret: 公众号AppSecret pay: mch-id: 微信支付商户号 mch-serial-no: 商户证书序列号 api-v3-key: API V3密钥(自定义) private-key-path: API私钥文件路径 lingxiao: weixin: mp: at-cache-key: 小程序AccessToken缓存的键 oa: at-cache-key: 公众号AccessToken缓存的键 ``` 2. 在类中注入`WeixinDevService`即可调用 ### 配置及使用`防抖防接口重复提交`功能 在指定的`Controller`中添加如下配置: ```java @PostMapping("/repeat") @RequestRepeatLimit(fields = {"student.name", "student.age"}, tips = "你手速不慢啊!") public ResponseResult repeat(@RequestBody Student student) { System.out.println(student); return ResponseResult.success(student); } ``` 如果开启了`appendSessionUserId`的设置,则需要实现`SessionUserProvider`接口,并将对象托管给`Spring`容器。 ### 配置及使用`全局异常捕获处理`功能 无需额外配置,系统自动对常用异常及全局异常进行了捕获,在处理全局异常时,如需忽略指定错误码打印堆栈日志信息,则需要实现 `ErrorLogProvider`接口,并将对象托管给`Spring`容器。 ### 配置及使用`全局打印请求日志`功能 无需额外配置,系统自动对`@RequestMapping`及其派生注解修饰的接口进行拦截打印日志,包括请求参数、响应结果以及耗时等。 场景一:不想打印某个接口的请求日志 ```java // 在接口方法上加上如下注解: @RequestLog(print = false) ``` 场景二:脱敏参数中的某个字段 ```java // 在接口方法上加上如下注解(支持多级注解,但非一级参数仅支持字符串类型): @RequestLog(hiddenParams = {"user.password", "user.realName"}) ``` ## 反馈建议 如果你在项目使用中遇到了任何问题,或者有一些更好的建议和想法,可以及时向我反馈,机票:[Gitee Issue](https://gitee.com/jastar-wang/lingxiao/issues) ## 许可证 `lingxiao` 采用“木兰宽松许可证第2版”开源协议,机票:[Mulan PSL v2](http://license.coscl.org.cn/MulanPSL2) --- 愣着干嘛?点`star`啊!!!