Java Web 人员经常要设计 RESTful API(如何设计好的RESTful API),通过 json 数据进行交互。那么前端传入的 json 数据如何被解析成 Java 对象作为 API入参,API 返回结果又如何将 Java 对象解析成 json 格式数据返回给前端,其实在整个数据流转过程中,HttpMessageConverter 起到了重要作用;另外在转换的过程我们可以加入哪些定制化内容? HttpMessageConverter 介绍 org.springframework.http.converter.HttpMessageConverter 是一个策略接口,接口说明如下
写在前面 我们每次构建一个 Spring 应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容;相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中 横切关注点 横切关注点: 指的是一些具有横越多个模块的行为 (来自维基百科的介绍) 说白了就是多个项目或模块都可以用到的内容,比如一个 SDK 在Spring Boot中,用于表示提供这种横切关注点的模块的术语是 starter,通过依赖 starter 可以轻松使用其包含的一些功能特性,无论你的工作中是否会构建自己的 starter,你都要具有构建 「starter」的思想,本文将结合 Spring
话说异常 「欲渡黄河冰塞川,将登太行雪满天」,无论生活还是计算机世界难免发生异常,上一篇文章RESTful API 返回统一JSON数据格式 说明了统一返回的处理,这是请求一切正常的情形;这篇文章将说明如何统一处理异常,以及其背后的实现原理,老套路,先实现,后说明原理,有了上一篇文章的铺底,相信,理解这篇文章就驾轻就熟了 实现 新建业务异常 新建 BusinessException.class 类表示业务异常,注意这是一个 Runtime 异常 1 2 3 4 5 6 7 8 9 @Data @AllArgsConstructor public final class Busine
关于 Spring 的全局处理,我有两方面要说: 1. 统一数据返回格式 2. 统一异常处理 为了将两个问题说明清楚,将分两个章节分别说明,本章主要说第一点 有童鞋说,我们项目都做了这种处理,就是在每个 API 都单独工具类将返回值进行封装,但这种不够优雅;我想写最少的代码完成这件事,也许有童鞋说,加几个注解就解决问题了,说的没错,但这篇文章主要是为了说明为什么加了几个注解就解决问题了,目的是希望大家知其所以然。 为了更好的说明问题,本文先说明如何实现,然后再详细剖析实现原理(这很关键) 为什么要做统一数据返回格式 前后端分离是当今服务形式的主流,如何设计一个好的
写在前面 在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题。用户的合法性与数据的可见性是数据安全中非常重要的一部分。但是,一方面,不同的应用对于数据的合法性和可见性要求的维度与粒度都有所区别;另一方面,以当前微服务、多服务的架构方式,如何共享Session,如何缓存认证和授权数据应对高并发访问都迫切需要我们解决。Shiro的出现让我们可以快速和简单的应对我们应用的数据安全问题 Shiro介绍 Shiro简介 这个官网解释不抽象,所以直接用官网解释:Apache Shiro™是一个强大且易用的 Java 安全框架,可以执行身份验证、授权、加密和会话管理等。基于 Shiro 的易于理解
上一篇文章 你应该知道的 @ConfigurationProperties 注解的使用姿势,这一篇就够了 介绍了如何通过 @ConfigurationProperties 注解灵活读取配置属性,这篇文章将介绍如何灵活配置 Spring Bean 写在前面 当我们构建一个 Spring 应用的时候,有时我们想在满足指定条件的时候才将某个 bean 加载到应用上下文中, 在Spring 4.0 时代,我们可以通过 @Conditional 注解来实现这类操作 我们看到 @Conditional 注解接收的参数是 extends Condition 接口的泛型类,也就是说,我们要使用 @Con
改造MappingJackson2HttpMessageConverter前言 项目组提出要求,Springboot项目中,@ResquestBody标记的bean传入的字符串类型的值要去掉前后空格 实现 因为项目默认使用 MappingJackson2HttpMessageConverter 作为 Json转换器, 于是乎重写一些方法做文章,具体实现如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Spring ResponseBody without null field通常Restful返回的Json格式数据,里面包含很多为空值null的字段,我们没必要将这些字段返回给前端,应该给出更多的有效字段,所以我们需要在Converter Message的时候将这些null值字段给过滤掉 方法一 添加 @JsonInclude(JsonInclude.Include.NON_NULL) 注解 该方法很简单,但是我们有太多的返回类型,一一添加也是很大的工作量,所以我们需要在转换的源头进行控制 方法二 实现 WebMvcConfigurer 接口,添加 @EnableWebMvc 和 @Co
@ResponseStatus Restful webservice请求会用到@ResponseStatus 注解,该注解可用于类级别上,也可以应用在方法级别上,代表请求响应的状态,通常就是返回HttpStatus的状态码,具体可查询每个状态码代,这里简单罗列一些: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CONTINUE(100, "Continue"), SWITCHING_PROTOCOLS(101, "Switching Protocols"), PROCESSING(102, "Processing"), CHECKPOINT(103
背景 在Web项目中,太多需要提交表单或者在请求URL中添加参数信息的操作,无论是前者还是后者,SpringMVC都将每个元素当做String来处理, 如果前台传入格式化为字符串的日期或这数值类型的时候就会报错(在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定),我们手动来强制转型很是麻烦,SpringMVC 提供的@initbinder 就是解决这个问题 @initbinder 在我的项目中是在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc



Copyright 2018-2019 Tanθ's Blog   |   辽ICP备19017651号-1   |     站点总字数: 138.2k 字   |   载入天数...载入时分秒...   |  站点地图   |  站长统计
  总访问量:  次  总访问人数:  人

博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议