国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > Java > 正文

Spring Boot接收單個(gè)String入?yún)⒌慕鉀Q方法

2024-07-14 08:42:44
字體:
供稿:網(wǎng)友

前言

接受參數(shù)是我們?cè)谌粘i_發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于Spring Boot接收單個(gè)String入?yún)⒅鉀Q方案的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧

場(chǎng)景:

在做接口時(shí),有的時(shí)候,接口入?yún)⒅恍枰粋€(gè)參數(shù),如果將一個(gè)參數(shù)封裝成一個(gè)對(duì)象很麻煩,故有了以下方式:

思路:

spring自帶的參數(shù)解析器貌似是不具備這個(gè)能力的,所有自定義

方式方法:

1.定義一個(gè)注解

@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @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啟動(dòng)類

(a.繼承WebMvcConfigurerAdapter;b.重寫addArgumentResolvers()方法)

@SpringBootApplication@EnableWebMvcpublic 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中應(yīng)用 

調(diào)用接口方,傳參如: {“name”:"張三"},Controller中就能獲取到"張三”

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汝阳县| 岳池县| 正宁县| 印江| 韶山市| 拉萨市| 巴马| 兴宁市| 襄城县| 庄浪县| 河津市| 余江县| 玉树县| 宜兰市| 定日县| 庆元县| 桂林市| 南岸区| 冷水江市| 万宁市| 乐都县| 张北县| 松潘县| 陆良县| 佳木斯市| 南和县| 京山县| 元江| 荔浦县| 金堂县| 隆德县| 上饶市| 瑞安市| 桐乡市| 大化| 剑河县| 定结县| 苍南县| 灵宝市| 眉山市| 西乌|