Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Native WebRequest webRequest
코드 개선하기
오늘은 일부러 에러를 만들어놓은 코드를 리팩토링 및 개선하는 과제를 풀어보았다. Git허브 주소 실행문제 첫번째로 실행부터 막혔었다. 그 이유는, 경로에 resource/application.yml이 존재하지 않아, jwt의 key를 가져올 수 없었기 때문이었다. 이를 해결한 후, 다시 실행을 눌러보았을때도 오류가 해결되지 않았다. DB를 연결하는 코드도 작성하지 않았기 때문이었다.
如何正确使用 Bean Validation 进行数据校验
一、背景 在前后端开发过程中,数据校验是一项必须且常见的事,从展示层、业务逻辑层到持久层几乎每层都需要数据校验。如果在每一层中手工实现验证逻辑,既耗时又容易出错。 图片 为了避免重复这些验证,通常的做法是将验证逻辑直接捆绑到领域模型中,通过元数据(默认是注解)去描述模型, 生成校验代码,从而使校验从业务逻辑中剥离,提升开发效率,使开发者更专注业务逻辑本身。 图片 在 Spring 中,目前支持两种不同的验证方法:Spring Validation 和 JSR-303 Bean Validation,即 @Validated(org .
SpringMVC系列-4 参数解析器
背景: 本文作为SpringMVC系列的第四篇,介绍参数解析器。本文讨论的参数解析表示从HTTP消息中解析出JAVA对象或流对象并传参给Controller接口的过程。 本文内容包括介绍参数解析器工作原理、常见的参数解析器、自定义参数解析器等三部分。其中,原理部分会结合源码进行说明。 1.工作原理 说明:本文重点在于说明参数解析器的工作原理和使用方式,为避免文章过于冗长,会刻意省略对异步请求和文件上传部分的分支逻辑,读者可在理解主线逻辑后自定阅读该部分源码。 源码介绍时,会忽略所有的日志打印以及与主线逻辑无关的try-catch-finnally块 SpringMVC系列-2 HTTP请求调用链 中介绍过:收到http请求后,进入DispatcherServlet的dispatcherServlet方法: protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { if...
@ControllerAdvice注解使用及原理探究-51CTO.COM
2023-08-31 08:12:23 @initBinder和@ModelAttribute都是请求过程中的处理,我们知道springMvc通过HandlerApapter定位到具体的方法进行请求处理,因此查看HandlerHaper的实现类,发现RequestMappingHandlerAdapter比较符合我们的目标。 最近在新项目的开发过程中,遇到了个问题,需要将一些异常的业务流程返回给前端,需要提供给前端不同的响应码,前端再在次基础上做提示语言的国际化适配。这些异常流程涉及业务层和控制层的各个地方,如果每个地方都写一些重复代码显得很冗余。 然后查询解决方案时发现了@ControllerAdvice这个注解,可以对业务异常进行统一处理。经过仔细了解后,发现这个注解还有更多的用处,都很实用。 1 ControllerAdvice介绍 @ControllerAdvice一般和三个以下注解一块使用,起到不同的作用, @ExceptionHandler: 该注解作用于方法上,,可以捕获到controller中抛出的一些自定义异常,统一进行处理,一般用于进行一些特定的异常处理。...
【Spring】@RequestBody的实现原理 - shanml - 博客园
@RequestBody注解可以用于POST请求接收请求体中的参数,使用方式如下: @Controller public class IndexController { @PostMapping(value = "/submit", produces = MediaType.APPLICATION_JSON_VALUE) public void submit(@RequestBody UserInfo userInfo) { System.out.println(userInfo.toString()); } } 那么是如何从请求中解析数据设置到对应的参数中呢,接下来就从源码的角度一探究竟。 DispatcherServlet是Spring MVC的核心,它对请求进行调度,收到请求后会进入DispatcherServlet的doDispatch方法中: 调用getHandler方法获取请求对应的Handler处理器; 根据handler获取对应的适配器,这里用到了适配器模式; 调用适配器的handle方法处理请求,它会返回一个ModelAndView对象; public...
Spring自定义参数解析器设计_京东云官方的技术博客_51CTO博客
京东云开发者 2023-04-14 09:56:56 博主文章分类:技术分享 ©著作权 文章标签 解析器 自定义 获取参数 spring 后端 文章分类 spring boot 后端开发 yyds干货盘点 ©著作权归作者所有:来自51CTO博客作者京东云开发者的原创作品,请联系作者获取转载授权,否则将追究法律责任 作者:京东零售 王鹏超 1.什么是参数解析器 @RequstBody、@RequstParam 这些注解是不是很熟悉? 我们在开发Controller接口时经常会用到此类参数注解,那这些注解的作用是什么?我们真的了解吗? 简单来说,这些注解就是帮我们将前端传递的参数直接解析成直接可以在代码逻辑中使用的javaBean,例如@RequstBody接收json参数,转换成java对象,如下所示: 前台传参 参数格式 { "userId": 1, "userName": "Alex"} application/json 正常代码书写如下: @RequestMapping(value = "/getUserInfo") public String...
如何正确使用 Bean Validation 进行数据校验|得物技术
来源:得物技术 目录 一、背景 二、Bean Validation 简介 1. 什么是 JSR ? 2. JSR-303 定义的是什么标准? 3. Spring Validation 的产生背景 3.1 为什么会同时存在两种方式? 3.2 为什么不合入到 JSR-303 中? 3.3 @Validated 的内置自动化校验 3.4 @Validated 和 @Valid 的区别 三、Bean Validation 的使用 1. 引入 POM 2. Bean 层面校验 2.1 变量层面约束 2.2 属性层面约束 2.3 容器元素约束 2.4 类层面约束 2.5 嵌套约束 2.6 手工验证 Bean 约束 3. 方法层面校验 3.1 函数参数约束 3.2 函数返回值约束 3.3 嵌套约束 3.4 在继承中方法约束 3.5 手工验证方法约束 4. 分组校验 5. 自定义校验 四、Bean Validation 自动执行以及原理 1. Validation 的常见误解 1.1 约束校验生效 1.2 约束校验不生效 2. Controller 自动执行约束校验原理 3.
【源码篇】Spring MVC多种请求入参处理方式都在这了(@RequestParam、@PathVariable、@RequestBody、Map、JavaModel、Request、基础类型)
Spring MVC源码分析相关文章已出: 更多Spring系列源码分析文章见SpringBoot专栏: 精通Spring Boot 当前文章Spring版本:5.2.12.RELEASE,不同版本类名可能不同,但核心思想都是一样的。 从SpringMVC的执行流程(参考博文:Spring MVC请求执行流程)来看,RequestMappingHandlerAdapter这个HandlerAdapter负责执行Controller中的相应方法,并对请求参数进行处理。 1、参数处理器HandlerMethodArgumentResolver的加载 RequestMappingHandlerAdapter实现了InitializingBean接口,因此在SpringBoot启动过程中实例化RequestMappingHandlerAdapter过程中(执行init-method()方法之前),会调用RequestMappingHandlerAdapter#afterPropertiesSet()方法: @Override public void...
Spring @InitBinder注解使用及原理详解
前言 由@InitBinder注解修饰的方法用于初始化WebDataBinder对象,能够实现:从request获取到handler方法中由@RequestParam注解或@PathVariable注解修饰的参数后,假如获取到的参数类型与handler方法上的参数类型不匹配,此时可以使用初始化好的WebDataBinder对获取到的参数进行类型处理。 一个经典的例子就是handler方法上的参数类型为Date,而从request中获取到的参数类型是字符串,SpringMVC在默认情况下无法实现字符串转Date,此时可以在由@InitBinder注解修饰的方法中为WebDataBinder对象注册CustomDateEditor,从而使得WebDataBinder能将从request中获取到的字符串再转换为Date对象。...
Spring Boot 接口一个 JSON 字符串用两个对象去接收,这能行吗?
来源:江南一点雨 这是最近一个小伙伴的提问,我觉得很有意思,和大伙聊一下。 小伙伴在工作中遇到类似下面这样一段代码: @RestController public class BookController { @PostMapping("/book") public void hello(@RequestBody Book book, @RequestBody Page page) { System.out.println("book = " + book); System.out.println("page = " + page); } } 按照他的理解,@RequestBody 注解的作用就是把请求体中的值解析为一个对象,一个请求只有一个请求体,请求体中的数据是通过 IO 流读取出来的,IO 有一个特点是读一次就没了。所以我们在日常开发中,一般接口方法的参数中只存在一个 @RequestBody 注解,不会存在两个该注解。 但是这个小伙伴在项目中遇到了类似上面的代码,他不理解为什么可以写两个 @RequestBody 注解,今天松哥就来和大家分析一下这问题。 1.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Native WebRequest
Contact Native WebRequest, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack