以下面的代码为例: @RestController public class HelloController { @RequestMapping("/") public BillSearch hello(@RequestBody BillSearch search) { return search; } } 前端通过Postman进行模拟: 下面开始一步步的揭开它的面纱: 先从HandlerMethodArgumentResolverComposite开始: public Object…
接上一篇:spring boot 是如何利用jackson进行反序列化的? @RestController public class HelloController { @RequestMapping("/") public BillSearch hello(@RequestBody BillSearch search) { return search; } } 返回的search是如何序列化json的? 上一篇说到RequestResponseBodyMethodProcessor这…
如何在不同站点(web服务进程)之间共享会话 Session 呢,原理很简单,就是把这个 Session 独立存储在一个地方,所有的站点都从这个地方读取 Session. 通常我们使用 Redis 来解决这个问题 Spring Boot 2.1.8 Redis 5.0.3 本项目源码 github 下载 本章解决前面文章 Spring Boot 利用 nginx 实现生产环境的伪热更新 产生的session共享问题. 1 Redis 准备 本示例使用 Redis 5.0.3 操作系统为 Mac…
Jackson一直是springframework默认的json库,从4.1开始,springframework支持通过配置GsonHttpMessageConverter的方式使用Gson. 在典型的Spring MVC中,一旦请求退出@Controller,它将寻找一个视图来呈现.当指定了@RequestBody或@RestController时,我们会告诉Spring跳过这一步,将java对象通过model写入响应结果.这样做时,Spring将专门寻找一个HttpMessageConver…
0.前言 经过前面一小节已经基本配置好了基于SpringBoot+SpringSecurity+OAuth2.0的环境.这一小节主要对一些写固定InMemory的User和Client进行扩展.实现动态查询用户,但为了演示方便,这里没有查询数据库.仅做Demo演示,最最关键的是,作为我个人笔记.其实代码里面有些注释,可能只有我知道为什么,有些是Debug调试时的一些测试代码.还是建议,读者自己跑一遍会比较好,能跟深入的理解OAuth2.0协议.我也是参考网上很多博客,然后慢慢测试和理解的. 参考…
0. 前言 之前帐号认证用过自己写的进行匹配,现在要学会使用标准了.准备了解和使用这个OAuth2.0协议. 1. 配置 1.1 配置pom.xml 有些可能会用不到,我把我项目中用到的所有包都贴出来. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </depen…
注:以我遇到的情况,只要发出的请求参数是map格式的,都会在前后多加一个双引号 以下代码有两个功能:1.FastJson 替换 Spring 自带的 Jackson  2.解决返回的字符串带双引号问题 @Configuration public class WebConfig { @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { // 1.定义一个converters转换消息的对象 FastJsonHttpM…
- 反序列化 import com.caucho.hessian.HessianException; import com.caucho.hessian.io.AbstractDeserializer; import com.caucho.hessian.io.AbstractHessianInput; import com.caucho.hessian.io.IOExceptionWrapper; import java.io.IOException; import java.time.Loc…
一.前言 spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间.其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restartC…
场景 不管是传统行业还是互联网行业,我们都需要保证大部分操作是幂等性的,简单点说,就是无论用户点击多少次,操作多少遍,产生的结果都是一样的,是唯一的.而今次公司的项目里,又被我遇到了这么一个幂等性的问题,就是用户的余额充值.创建订单和订单支付,不管用户点击多少次,只会有一条充值记录,一条新订单记录,一条订单支付记录. 技术方案 现在使用比较广泛的方案都是基于Redis. 方案:Redis+token 处理流程:数据提交前,前端要向服务端的申请token,token(带有过期时间)放到redis:…