如何替换RequestBody和RequestParam参数的属性
背景 近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果(项目历史原因,不方便上Jwt授权这套),所以就研究了一下Http请求链路,发现可以通过 javax.servlet.Filter 去实现 替换RequestParam参数 首先通过继续 HttpServletRequestWrapper…
围绕 java 的技术文章与经验分享。
共 1044 篇文章背景 近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果(项目历史原因,不方便上Jwt授权这套),所以就研究了一下Http请求链路,发现可以通过 javax.servlet.Filter 去实现 替换RequestParam参数 首先通过继续 HttpServletRequestWrapper…
介绍 应用程序编程接口(API)在现代软件开发中扮演着至关重要的角色,它们实现了不同系统之间的通信与交互。Java作为其中最流行的编程语言之一,为API开发提供了一个强大而灵活的平台。本文将深入探讨在Java中设计有效API的原则,并着重介绍RESTful设计原则、版本控制策略以及文档实践。 Java中的RESTful API原则…
最近项目中使用到了 Lock4j 的分布式锁组件,小编今天就带大家学习一下该框架,以及如何在我们项目中进行集成使用。 一、简介 Lock4j 是一个分布式锁组件,它提供了多种不同的支持以满足不同性能和环境的需求;它基于 Spring AOP ,支持 RedisTemplate 、 Redisson 、 Zookeeper 作为底层。 二、开源地址…
引言 Mockito是一个流行的Java mocking框架,它允许开发者以简单直观的方式创建和使用模拟对象(mocks)。Mockito特别适用于在Spring…
背景 后台业务开发的过程中,往往会遇到这种场景:需要记录每条记录产生时间、修改时间、修改人及添加人,在查询时查询出来。 以往的做法通常是手动在每个业务逻辑里耦合上这么一块代码,也有更优雅一点的做法是写一个拦截器,然后在Mybatis拦截器中为实体对象中的公共参数进行赋值,但最终依然需要在业务SQL上手动添加上这几个参数,很多开源后台项目都有类似做法。…
ThreadLocal也叫“线程本地变量”、“线程局部变量”: 其作用域覆盖线程,而不是某个具体任务; 其“自然”的生命周期与线程的生命周期“相同”(但在JDK实现中比线程的生命周期更短,减少了内存泄漏的可能)。 ThreadLocal代表了一种 线程与任务剥离 的思想,从而达到 线程封闭…
让代码性能更高 需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。 反例: Map<String, String> map = ...; for…
过去一年里,ChatGPT 和 Google Bard 这样的东西出现,为大众带来了生成式人工智能,似乎每个人都在梦想和计划如何在他们的项目甚至日常生活中利用人工智能。 如果您是 Spring 开发人员,您可能想知道如何在 Spring 应用程序中实现生成式 AI。如果是这样,那么接下来这个视频一定适合您。 A BiliBili video 该视频介绍了…
Spring Framework 是一种流行的开源企业级框架,用于创建在 Java Virtual Machine (JVM) 上运行的独立、生产级应用程序。而Spring Boot 是一个工具,可以让使用 Spring 框架更快、更轻松地开发 Web 应用程序和微服务。随着 Spring Boot 的不断发展,开发人员必须跟上最新的升级和变化。…
我相信很多小伙伴在初次接触 Spring Security 时,一定会被这个问题所困扰,例如如下两段配置: http.authorizeRequests() .antMatchers("/admin/**").hasAuthority("admin") .antMatchers("/user/**").hasAuthority("user")…