springboot中@ReqquestBody注解的使用以及不生效的原因

本文探讨了在SpringBoot项目中@RequestBody注解在不同项目中生效与失效的问题。首先介绍了背景,作者遇到的一个项目中注解工作正常,而另一个则引发异常。接着,详细讲解了如何正确使用@RequestBody注解,包括前端参数设置和后端接收。然后,重点分析了@RequestBody注解失效的原因,源于配置文件中的一段代码覆盖了默认转换器,导致不支持application/json类型的数据转换。最后,提供了解决方案,通过添加方法恢复默认转换器,确保对多种类型的支持。
摘要由CSDN通过智能技术生成
一:背景

自己有两个项目,一个项目中使用@RequestBody注解是有效的,而另一个项目中无效,一直报异常:

2021-04-07 18:56:48.483  WARN 11484 --- [io-8288-exec-10] .[org.springframework.web.HttpMediaTypeNotSupportedException:
 Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

网上找到的解决办法大都是说依赖未添加正确,还有其他一些办法都没有有效的解决问题。无果之后自己从源码入手,找到了出问题的原因。

二:如何使用@RequestBody注解

1.前端传递参数时需设置数据类型为applicaition/json格式,如果使用的是axios,代码如下所示

axios({
   
	method: 'post',
	headers: {
   
		'Content-Type': 'application/json'
	},
	url: 'http://localhost:8288/test',
	data: {
   name: 'zhangsan',age:10},
}).then(res => {
   });

2.后端使用@RequestBody注解接收,代码如下所示:

@RequestMapping("/test")
public String test(@RequestBody User user){
   
    
    return "success";
}

3.springboot默认添加了jackson依赖,不需要我们进行额外的引入,网上很多解决办法说需要引入该依赖。。

三: @RequestBody注解无效、后台报异常的原因

项目中出现@RequestBody注解无效的情况后,首先检查了前端是否设置了正确的'Content-Type': 'application/json',然后检查了后端是否使用正确的方式接收。经确定,两者都是正确的。经过百度问题无法解决后,从源码入手找到了问题的原因:自己配置文件中的一段代码覆盖了springboot默认加载的配置。如下图代码所示:

public class MyWebConfig extends WebMvcConfigurationSupport {
   
	@Bean
	public HttpMessageConverter responseBodyConver
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值