自研cloud框架专题–web模块(三)

news2024/10/7 8:28:48
  • 项目特点
  • 一:框架集成
    • 1.引入核心依赖
    • 2.配置相关功能
  • 二:功能介绍
    • 1.swagger支持并提供swagger快速配置
    • 2.knife增强swagger支持
    • 3.全局请求参数校验(Validation)支持
    • 4.字段脱敏支持
    • 5.默认jackson序列化
    • 6.xss,cors支持
    • 7.访问日志支持
    • 8.全局异常处理,统一返回结果
    • 9.系统关键及常用信息启动显示

开源地址:https://github.com/2892824942/ty-cloud/blob/main/ty-framework/ty-framework-service

项目特点

  • 自动集成spring-boot-web模块
  • swagger支持并提供swagger快速配置
  • knife增强swagger支持
  • 全局请求参数校验(Validation)支持
  • 字段脱敏支持
  • 默认jackson序列化
  • xss支持
  • cors支持
  • 访问日志支持
  • 全局异常处理,统一返回结果
  • 系统关键及常用信息启动显示

一:框架集成

1.引入核心依赖

暂时未发到中央仓库(准备中)…


<dependency>
    <groupId>com.ty</groupId>
    <artifactId>ty-framework-web-starter</artifactId>
    <version>${最新版本}</version>
</dependency>

2.配置相关功能

#以下功能按需配置
framework:
  web:
  #注意:开启此配置后,custom-api中的controller将会全部增加prefix访问前缀
  enable-mvc-url-prefix: true
  custom-api:
    core:
      prefix: /core
      controller: '**.web.**'
    other:
      prefix: /
      controller: '**'
  xss:
    enable: true
  #hashId配置
  hash-id:
    enable: true
    min-length: 4
    salt: 'test111'
  enable-cors: true
  swagger:
    author: 大壮
    version: 1.0.0
    description: domo项目接口文档
    title: 接口文档
    url: http://127.0.0.1:8080/swagger-ui/index.html
    license-url: license-url
    email: 282824942@qq.com

二:功能介绍

1.swagger支持并提供swagger快速配置

在这里插入图片描述

  • swagger配置
framework:
  swagger:
  author: suyouliang
  version: 1.0.0
  description: domo项目接口文档
  title: 接口文档
  url: http://127.0.0.1:8080/swagger-ui/index.html
  license-url: license-url
  email: test@qq.com
  • WebConfig配置
framework:
  web:
  custom-api:
    core:
      prefix: /core
      controller: '**.web.**'
    other:
      prefix: /
      controller: '**'

custom-api下可以配置多个分组,每个分组将自动在swagger中生成一个分组

prefix按照前缀匹配

如没有统一前缀,可手动加上前缀或开启enable-mvc-url-prefix配置,开启后,会在controller的访问路径自动加上prefix

2.knife增强swagger支持

knife需要手动开启:

#knife4j相关配置,swagger增强
knife4j:
  enable: true
  setting:
    language: zh_cn

knife界面:
在这里插入图片描述

3.全局请求参数校验(Validation)支持

新增
具体使用方式不在赘述,和官网无差别.

新增@InEnum,@Mobile,@Telephone注解,用于校验枚举,手机号,电话号码

4.字段脱敏支持

  • 单向字段脱敏:
    银行卡,车牌号,中文名字,邮箱,手机号,电话号码,身份证号,密码等注解

  • 双向字段脱敏:
    有的业务场景,不希望自增的id直接返回前端导致业务暴露或者其他安全目的.可以使用@HashedId注解
    @HashedId注解可自动在序列化时将id进行脱敏处理,接受时进行还原处理

使用示例

在实体类中标记

//在实体类中标记
public class AddrVO implements BaseIdDO<Long> {

  private static final long serialVersionUID = 1L;

  @Schema(description = "id")
  @HashedId
  private Long id;

}

在参数上标记


public class UserController {

    @Resource
    private IUserService userService;

    @GetMapping("/getById")
    public BaseResult<UserFullDTO> getById(@HashedId Long id) {
        return BaseResult.success(userService.getById(id));
    }
}

5.默认jackson序列化

自动集成jackson进行序列化

  • 解决数值超过 2^53-1,在 JS 会出现精度丢失问题
  • 解决日期格式问题,Date及LocalDateTime兼容,且支持spring.jackson.date-format配置
  • 增加localDate,LocalTime序列化

6.xss,cors支持

需要开启如下配置

framework:
  xss:
    enable: true
    #排除哪些url不走xss过滤
    exclude-urls: "/test/**","/ops/**"
  enable-cors: true

7.访问日志支持

spring web接口访问过程,通过filter将访问及返回的上下文信息整理,并通过springEvent事件广播,可自定义进行处理

以下是监听对应事件简单打印log

@Component
@Slf4j
public class ApiLogListener {

    @EventListener
    public void onApiAccessLogEvent(ApiAccessLogEvent event) {
        log.info("api access log eventData: \r\n{}", JsonUtils.toJson(event.getSource()));
    }

    @EventListener
    public void onApiErrorLogEvent(ApiErrorLogEvent event) {
        log.error("api error log eventData: {}", JsonUtils.toJson(event.getSource()));
    }
}

8.全局异常处理,统一返回结果

具体见:BaseResult,GlobalExceptionHandler

9.系统关键及常用信息启动显示

在这里插入图片描述

更详细的使用案例,见:https://github.com/2892824942/framework-demo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1501990.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI新工具 百分50%算力确达到了GPT-4水平;将音乐轨道中的人声、鼓声、贝斯等音源分离出来等

1: Pi 百分50%算力确达到了GPT-4水平 Pi 刚刚得到了巨大的升级&#xff01;它现在由最新的 LLMInflection-2.5 提供支持&#xff0c;它在所有基准测试中都与 GPT-4 并驾齐驱&#xff0c;并且使用不到一半的计算来训练。 地址&#xff1a;https://pi.ai/ 2: Moseca 能将音乐…

Java项目:基于SSM框架实现的二手车交易平台【源码+开题报告+任务书+毕业论文+答辩ppt】

一、项目简介 本项目是一套基于SSM框架实现的二手车交易平台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能齐…

【漏洞复现】锐捷 EWEB auth 远程命令执行漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

WPF开源的一款免费、开箱即用的翻译、OCR工具

前言 今天大姚给大家分享一款由WPF开源的、免费的&#xff08;MIT License&#xff09;、即开即用、即用即走的翻译、OCR工具&#xff1a;STranslate。 WPF介绍 WPF 是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、…

HTML5+CSS3+JS小实例:暗紫色Tabbar

实例:暗紫色Tabbar 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scal…

Java开发与配置用到的各类中间件官网

开发配置时用到了一些官网地址&#xff0c;记录一下。 activemq 官网&#xff1a;ActiveMQ elk 官网&#xff1a;Elasticsearch 平台 — 大规模查找实时答案 | Elastic nginx 官网&#xff1a;nginx maven 官网&#xff1a;Maven – Welcome to Apache Maven nexus 官网&a…

Linux环境下使用线程方式操作UART读写功能

目录 概述 1 Linux环境下UART设备 2 轮询方式操作UART功能实现 2.1 打开串口函数&#xff1a;usr_serial_open 2.2 关闭串口函数&#xff1a; usr_serial_close 2.3 发送数据函数&#xff1a; usr_serial_sendbytes 2.4 接收数据函数&#xff1a; thread_uart_readbytes …

Humanoid-Gym 开源人形机器人端到端强化学习训练框架!星动纪元联合清华大学、上海期智研究院发布!

系列文章目录 前言 Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer GitHub Repository: GitHub - roboterax/humanoid-gym: Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer 一、介…

挑战杯 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …

unity学习(51)——服务器三次注册限制以及数据库化角色信息6--完结

同一账号只写第一次&#xff0c;不同账号第一次爆炸 &#xff0c;就因为下面部分得到逻辑有问题 修改后的代码如下&#xff1a;1.成功完成角色注册信息的数据库化记录。2.每个账号上限3个角色。3.角色是可以重名的&#xff0c;但是角色的id不会重名。 internal class UserCach…

最简k8s部署(AWS Load Balancer Controller使用)

问题 我需要在k8s集群里面部署springboot服务&#xff0c;通过k8s ingress访问集群内部的springboot服务&#xff0c;应该怎么做&#xff1f; 这里假设已经准备好k8s集群&#xff0c;而且也准备好springboot服务的运行镜像了。这里我们将精力放在k8s服务编排上面。 一图胜千言…

原生JavaScript,根据后端返回JSON动态【动态列头、动态数据】生成表格数据

前期准备&#xff1a; JQ下载地址&#xff1a; https://jquery.com/ <!DOCTYPE html> <html><head><meta charset"utf-8"><title>JSON动态生成表格数据,动态列头拼接</title><style>table {width: 800px;text-align: cen…

MySQL安装与卸载

安装 1). 双击官方下来的安装包文件 2). 根据安装提示进行安装(全部默认就可以) 安装MySQL的相关组件&#xff0c;这个过程可能需要耗时几分钟&#xff0c;耐心等待。 输入MySQL中root用户的密码,一定记得记住该密码 配置 安装好MySQL之后&#xff0c;还需要配置环境变量&am…

释机器学习中的召回率、精确率、准确率

精确率和召回率又被叫做查准率和查全率&#xff0c;可以通过P-R图进行表示 如何理解P-R(精确率-召回率)曲线呢&#xff1f;或者说这些曲线是根据什么变化呢&#xff1f; 以逻辑回归举例&#xff0c;其输出值是0-1之间的数字。因此&#xff0c;如果我们想要判断用户的好坏&…

Qt 自绘进度条 QProgressBar使用

文章目录 效果图控件介绍绘制函数总结 效果图 控件介绍 QProgressBar是Qt框架中提供的一个控件&#xff0c;用于在界面上显示任务的进度。它通常用于向用户展示一个操作完成的百分比&#xff0c;比如文件复制、数据加载等操作的进度。 QProgressBar的主要特性&#xff1a; 范…

linux应用程序需要编写的脚本

每一个程序都按照下面的要求进行脚本编写 多个应用之间联合安装采用编写外围脚本&#xff0c;依次调用多个应用的脚本的方式实现

【elasticsearch】ES的JAVA工具类完整版(待完成...)

springboot 的 elasticsearch 版本: 7.15.2 前情提要: 1.首先要理解 elasticsearch 对于【数据类型】很严格,如果字段类型不规范,在 检索/排序/聚合 时候类型不正确就会出现报错或者查不到数据的问题。所以在一般String类型插入结构如下: 这样的结构,不仅可以支持分词查…

css 背景图片居中显示

background 简写 background: #ffffff url(https://profile-avatar.csdnimg.cn/b9abdd57de464582860bf8ade52373b6_misnice.jpg) center center / 100% no-repeat;效果如图&#xff1a;

ubuntu 卸载miniconda3

一开始安装路径错了&#xff0c;需要重新安一次&#xff0c;就一起记录了。 前提是这种方式安装&#xff1a; ubuntu安装miniconda3管理python版本-CSDN博客 删除Miniconda的安装目录 这目录就是你选择安装的时候指定的&#xff0c;如果记不得了,可以这样查看 which conda 这…

docker拉取镜像失败的解决方案大全

更换国内源 创建或修改 /etc/docker/daemon.json 文件&#xff0c;修改&#xff1a; {"registry-mirrors" : ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https:…