SpringBoot同时接收文件以及json参数实现方式
目录前端传参后端接收注意总结前端传参
let upData = new FormData();
// 将文件列表赋值给files参数
this.files.forEach(function (file) {
upData.append("files", file);
});
this.firmwareSaveDto = this.formData;
let commodityDto = JSON.stringify(this.firmwareSaveDto);
// 将json对象赋值给save ...
Spring Validation的校验顺序问题及解决过程
目录问题场景原理剖析解决方法创建五个接口修改Controller控制层代码修改实体类代码整改结果后续问题问题原因解决方案总结问题场景
测试发现对同一个接口调用多次时,返回的校验异常信息不同,经过问题追踪,入参实体类代码如下:
@Data
public class EditDevNameDto {
@NotBlank(message = "deviceSn must not null")
...
AOP在SpringBoot项目中的使用场景解读
目录添加DTO添加controller(同包不同类)控制器1控制器2AOP场景演示1. 对某package下的所有接口进行方法执行前逻辑校验新增切面,编写处理逻辑2. 对某controller类下的所有接口进行方法执行前逻辑校验新增切面,编写处理逻辑3. 对某注解修饰的所有接口进行方法执行前逻辑校验自定义注解在控制器1 test 方法前修饰自定义注解 ...
数据结构-图
概述
图是一种较为复杂的非线性结构。 为啥说其较为复杂呢?
根据前面的内容,我们知道:
线性数据结构的元素满足唯一的线性关系,每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。
树形数据结构的元素之间有着明显的层次关系。
但是,图形结构的元素之间的关系是任意的。
何为图呢? 简单来说,图就是由 ...
Java通过value获取Map中key的三种实现过程
目录简介方法描述循环法Stream方法Apache Commons Collections的BidiMap总结简介
我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值。然而,有的时候我们需要反过来获取,知道Value值,求Key值。
本文将用实例介绍三种方法,通过传入Value值,获取得到Key值。
方法描述
循 ...
Java导致内存泄漏的多种情况分析
目录1、生命周期长的集合2、未关闭的资源3、ThreadLocal 使用不当4、内部类与外部类引用5、 监听器与回调今天我们来一起聊一聊有哪些情况会导致内存泄漏。
什么是 内存泄漏 呢?
内存泄漏 是指对象 已经不再被程序使用,但因为某些原因 无法被垃圾回收器回收,长期占用内存,最终可能引发&nb ...
JAVA中对象常见的几种方法比较
目录引言基本元素比较1. 基本数据类型:直接用==比较值2. 包装类:分两种情况3. String 类型:核心看==和equals()的区别基本元素比较的核心建议总结对象的比较1. 覆写基类Object的equals()+hashCode()核心用途核心规则实现要点示例适用场景2. 基于Comparable接口的比较核心用途核心方法实现要点示例适用场景3. 基于Comparat ...
使用SpringBoot+MyBatis实现数据库字段级加密
目录为什么需要字段级加密?技术选型:为什么选择Spring Boot + MyBatis?Spring Boot的优势MyBatis的优势核心实现思路1. 加密注解设计2. 实体类标记3. 加密工具类4. MyBatis拦截器实现实际应用场景1. 用户信息保护2. 金融数据安全3. 医疗数据保护4. 企业数据安全安全性考虑总结为什么需要字段级加密?
在当今数据驱动的时 ...
通过mybatis-plus进行数据库字段加解密方式
目录1、编写handler2、编写加解密util3、实体及字段配置4、自定义mapper语句总结1、编写handler
@MappedJdbcTypes(JdbcType.VARCHAR)
public class EncryptHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String parameter, ...
SpringBoot整合Activiti的项目中实现抄送功能
目录1、实现思路2、在Spring Boot中集成Activiti2.1、设计抄送表2.2、抄送实体类2.3、实现抄送服务3、前端集成3.1、抄送组件3.2、抄送列表页面4、高级功能扩展4.1、邮件通知集成4.2、消息推送集成(WebSocket)4.3、 抄送规则配置4.4、 应用配置文件4.5、 流程定义中的抄送配置5、总结1、实现思路
在Activiti工作 ...
JVM 堆内存分代
今天我们一起来聊一聊 JVM 堆内存。
Java Heap(堆内存)由 Young Generation(新生代,约占 1/3 )和 Old Generation(老年代,约占 2/3 )组成。
Young Generation 又由 Eden Space(伊甸园区,占新生代 80% )、Survivor Space 0(幸存者区0,占新生代 10% )和 Survivor Space 1(幸存者区 ...
SpringCloud Gateway的使用 + Nacos动态路由实践指南
目录一、简介1、什么是gateway?2、没有gateway的弊端3、gateway解决了什么?4、gateway和zuul的区别5、gateway核心概念6、gateway是如何工作的二、构建一个springcloud Gateway服务1、新建一个微服务1.1、新建gateway子模块1.2、引入依赖2、配置服务2.1、创建启动类2.2、创建application.yml配置文件2.3、启动并访问Gatewa ...
MyBatis-Plus 复杂查询Lambda+Wrapper 多条件功能实现
目录Java 数据 01:MyBatis-Plus 复杂查询(Lambda+Wrapper 多条件)一、MyBatis-Plus 简介与核心概念1.1 什么是 MyBatis-Plus?1.2 核心组件二、Lambda + Wrapper 基础入门2.1 准备工作2.2 基本查询示例三、复杂查询条件详解3.1 基础比较操作符3.2 逻辑操作符3.3 聚合函数与分组查询3.4 排序与分页四、高级特性与最佳实践4 ...
Java虚拟机(JVM)的自带工具使用详解
目录jpsjstat 的各种命令jinfojmapjhatjstack总结jps
JVM进程状态工具,用于查看进程的基本信息。JPS是Java Virtual Machine Process Status Tool的缩写,它是Java提供的一个用于查看所有Java进程的命令行工具。
jps: 默认情况下,不带任何参数运行jps将显示所有正在运行的Java进程的PID和主类名。jps -l: 使用-l选项可以显 ...
Java JAR包反编译工具实战指南与应用场景
目录1. JAR包反编译工具概述与应用场景1.1 反编译工具的核心定义与技术本质1.2 典型应用场景与行业实践2. jd-gui.exe 工具介绍与运行环境要求2.1 jd-gui 的核心功能与架构设计2.1.1 图形化界面下的字节码解析机制2.1.2 支持的Java版本范围及兼容性说明2.1.3 内置反编译引擎的工作流程解析2.2 运行环境的技术要求与配置建议2 ...
MyBatis插件机制的使用及说明
目录拦截器介绍及配置源码分析Plugin.wrap方法总结MyBatis插件机制是该框架提供的一种灵活扩展方式,允许开发者在不修改框架源代码的情况下对MyBatis的功能进行定制和增强。
这种机制主要通过拦截器(Interceptor)实现,使得开发者可以拦截和修改MyBatis在执行SQL语句过程中的行为。
MyBatis允许使用插件来拦截的方法调用 ...
SpringBoot整合knife4j3.0.3实现过程
目录配置Swagger使用使用接口字段说明Knife4j 增强功能总结在Spring Boot项目中,我们可以通过引入Swagger依赖,然后在Controller中加入相应注解,即可生成API文档。Swagger提供了一个Web界面,在这个界面上可以查看所有API的信息,包括请求方法、参数、响应码等。
Knife4j是Swagger-UI的增强版,它是在Swagger-UI的基础上 ...
SpringBoot整合Kafka实现高可用消息队列集群详解
目录一、Kafka简介1.1 什么是Kafka1.2 Kafka核心概念二、搭建Kafka高可用集群三、SpringBoot整合Kafka详细步骤3.1 创建SpringBoot项目3.2 配置文件3.3 配置类3.4 消息实体类3.5 生产者服务3.6 消费者服务3.7 消费者容器工厂配置3.8 监控和管理端点3.9 异常处理和重试机制3.10 健康检查四、高可用性保障措施4.1 集群配置建议 ...
Java动态数组的实现过程
目录1. 基础结构设计2. 核心功能实现2.1 基本操作获取元素个数和容量获取和设置元素2.2 添加元素2.3 插入元素2.4 删除元素2.5 扩容机制3. 性能分析时间复杂度空间复杂度4. 实现特点5. 改进建议总结在本文中,我们将深入探讨如何实现一个简单的动态数组(类似于Java中的ArrayList)。通过这个实现,我们可以更好地理解动态数 ...
Java中实现事务的几种方法代码示例
目录前言1. JDBC 原生事务2. Spring 编程式事务3. Spring 声明式事务(注解方式)4. EJB 事务5. 分布式事务总结前言
事务是数据库操作中的重要概念,它确保了一组操作要么全部成功,要么全部失败,从而保证数据的一致性和完整性。在 Java 中,我们有多种方式来实现事务管理。本文将详细介绍几种常用的事务实现方法,并提供 ...