Spring Boot接收单个String入参的解决方法

 更新时间:2018年11月01日 10:30:00   作者:swugogo  
这篇文章主要给大家介绍了关于Spring Boot接收单个String入参的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

接受参数是我们在日常开发中经常会遇到的一个需求,下面这篇文章主要给大家介绍了关于Spring Boot接收单个String入参之解决方案的相关内容,下面话不多说了,来一起看看详细的介绍吧

场景:

在做接口时,有的时候,接口入参只需要一个参数,如果将一个参数封装成一个对象很麻烦,故有了以下方式:

思路:

spring自带的参数解析器貌似是不具备这个能力的,所有自定义

方式方法:

1.定义一个注解

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestSingleParam {
 String value();

 boolean required() default true;

 String defaultValue() default "";
}

2.定义解析器

public class RequestSingleParamHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
 @Override
 public boolean supportsParameter(MethodParameter parameter) {
  return parameter.hasParameterAnnotation(RequestSingleParam.class);
 }


 @Override
 public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
         NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
  RequestSingleParam requestSingleParam = parameter.getParameterAnnotation(RequestSingleParam.class);
  HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
  BufferedReader reader = request.getReader();
  StringBuilder sb = new StringBuilder();
  char[] buf = new char[1024];
  int rd;
  while ((rd = reader.read(buf)) != -1) {
   sb.append(buf, 0, rd);
  }
  JSONObject jsonObject = JSONObject.parseObject(sb.toString());
  String value = requestSingleParam.value();
  return jsonObject.get(value);
 }

}

3.修改Springboot启动类

(a.继承WebMvcConfigurerAdapter;b.重写addArgumentResolvers()方法)

@SpringBootApplication
@EnableWebMvc
public class SpringbootDemoApplication extends WebMvcConfigurerAdapter {

 public static void main(String[] args) {
  SpringApplication.run(SpringbootDemoApplication.class, args);
 }

 @Override
 public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers){
  argumentResolvers.add(new RequestSingleParamHandlerMethodArgumentResolver());
  super.addArgumentResolvers(argumentResolvers);
 }
}

4.在Controller中应用 

调用接口方,传参如: {“name”:"张三"},Controller中就能获取到"张三”

 @RequestMapping(value = "/test",method = RequestMethod.POST)
 public void test(@RequestSingleParam(value = "name") String name){
   System.out.println(name);
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 解决SpringBoot application.yaml文件配置schema 无法执行sql问题

    解决SpringBoot application.yaml文件配置schema 无法执行sql问题

    这篇文章主要介绍了解决SpringBoot application.yaml文件配置schema 无法执行sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java GUI编程菜单组件实例详解

    Java GUI编程菜单组件实例详解

    在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用特定的功能,今天通过本文给大家介绍下Java GUI编程菜单组件实例详解,感兴趣的朋友一起看看吧
    2022-04-04
  • Java并行执行任务的几种方案小结

    Java并行执行任务的几种方案小结

    这篇文章主要介绍了Java并行执行任务的几种方案小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot+RabbitMQ实现消息可靠传输详解

    SpringBoot+RabbitMQ实现消息可靠传输详解

    消息的可靠传输是面试必问的问题之一,保证消息的可靠传输主要在生产端开启 comfirm 模式,RabbitMQ 开启持久化,消费端关闭自动 ack 模式。本文将详解SpringBoot整合RabbitMQ如何实现消息可靠传输,需要的可以参考一下
    2022-05-05
  • Java HashTable与Collections.synchronizedMap源码深入解析

    Java HashTable与Collections.synchronizedMap源码深入解析

    HashTable是jdk 1.0中引入的产物,基本上现在很少使用了,但是会在面试中经常被问到。本文就来带大家一起深入了解一下Hashtable,需要的可以参考一下
    2022-11-11
  • springboot整合mybatis实现多表查询的实战记录

    springboot整合mybatis实现多表查询的实战记录

    SpringBoot对数据库操作有多种方式,下面这篇文章主要给大家介绍了关于springboot整合mybatis实现多表查询的相关资料,文中通过示例代码以及图文介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • Java开启新线程并传参方法代码实现

    Java开启新线程并传参方法代码实现

    这篇文章主要介绍了Java开启新线程并传参方法代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java的动态代理模式之JDK代理详解

    Java的动态代理模式之JDK代理详解

    这篇文章主要介绍了Java的动态代理模式之JDK代理详解,代理对象,不需要实现接口,但是目标对象要实现接口,否则不能用动态代理,JDK 实现代理只需要使用 newProxyInstance 方法,但是该方法需要接收三个参数,需要的朋友可以参考下
    2023-11-11
  • java删除文件和文件夹具体实现

    java删除文件和文件夹具体实现

    这篇文章介绍了java删除文件和文件夹具体实现,有需要的朋友可以参考一下
    2013-10-10
  • java往php传数据操作方法

    java往php传数据操作方法

    在本篇内容里小编给大家分享的是关于java往php传数据操作方法和技巧,需要的朋友们可以跟着学习下。
    2018-12-12

最新评论