日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

SpringBoot優(yōu)雅定制接口參數(shù)格式轉(zhuǎn)換

來源: 責(zé)編: 時(shí)間:2024-05-29 08:52:24 227觀看
導(dǎo)讀環(huán)境:SpringBoot3.2.51. 簡(jiǎn)介在Spring MVC中,數(shù)據(jù)類型的轉(zhuǎn)換、自動(dòng)綁定和格式化是一個(gè)非常強(qiáng)大的功能,Spring內(nèi)置了非常多的數(shù)據(jù)類型轉(zhuǎn)換器。如在一個(gè)HTTP請(qǐng)求中SpringMVC默認(rèn)就具備將JSON個(gè)數(shù)的數(shù)據(jù)轉(zhuǎn)換為Java對(duì)象,將一

環(huán)境:SpringBoot3.2.5gJ728資訊網(wǎng)——每日最新資訊28at.com

1. 簡(jiǎn)介

在Spring MVC中,數(shù)據(jù)類型的轉(zhuǎn)換、自動(dòng)綁定和格式化是一個(gè)非常強(qiáng)大的功能,Spring內(nèi)置了非常多的數(shù)據(jù)類型轉(zhuǎn)換器。如在一個(gè)HTTP請(qǐng)求中SpringMVC默認(rèn)就具備將JSON個(gè)數(shù)的數(shù)據(jù)轉(zhuǎn)換為Java對(duì)象,將一個(gè)字符串?dāng)?shù)字轉(zhuǎn)換為Number類型等等。然而,Spring的默認(rèn)數(shù)據(jù)綁定機(jī)制有時(shí)可能無法滿足特定的業(yè)務(wù)需求,比如從特定格式的字符串中解析出自定義對(duì)象的實(shí)例。為了解決這個(gè)問題,Spring允許我們自定義注解和數(shù)據(jù)格式化器,以便在請(qǐng)求參數(shù)和Java對(duì)象之間進(jìn)行自定義的轉(zhuǎn)換。gJ728資訊網(wǎng)——每日最新資訊28at.com

本篇文章將結(jié)合如下需求講解如何基于SpringBoot環(huán)境下自定義注解來實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換。gJ728資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)有如下接口:gJ728資訊網(wǎng)——每日最新資訊28at.com

@GetMapping("/user")public User getUser(User user) {  return user ;}

請(qǐng)求url如下:gJ728資訊網(wǎng)——每日最新資訊28at.com

http://localhost:9001/api/objects/user?user=666,中國

在默認(rèn)情況下,Spring是無法將這里的user參數(shù)值正確的綁定到User對(duì)象。gJ728資訊網(wǎng)——每日最新資訊28at.com

2. 實(shí)戰(zhàn)案例

2.1 實(shí)現(xiàn)目標(biāo)

為了盡可能的簡(jiǎn)單,期望通過在接口請(qǐng)求參數(shù)上添加一個(gè)注解就能完成數(shù)據(jù)類型的轉(zhuǎn)換及綁定。如下形式:gJ728資訊網(wǎng)——每日最新資訊28at.com

@GetMapping("/user")public User getUser(@UserFormat User user)

Spring提供了一種基于注解驅(qū)動(dòng)的格式化,也就是上面這里看到的通過注解標(biāo)注一個(gè)參數(shù)(字段)來實(shí)現(xiàn)數(shù)據(jù)的格式化。gJ728資訊網(wǎng)——每日最新資訊28at.com

要實(shí)現(xiàn)基于注解驅(qū)動(dòng)的格式化,需要我們自定義類實(shí)現(xiàn)AnnotationFormatterFactory接口。該接口定義如下:gJ728資訊網(wǎng)——每日最新資訊28at.com

// 這里的泛型是注解類型,也就是我們要使用什么注解來標(biāo)記我們的參數(shù)(字段)public interface AnnotationFormatterFactory<A extends Annotation> {  // 這個(gè)注解可以使用在什么字段上  Set<Class<?>> getFieldTypes();  // 將對(duì)象轉(zhuǎn)換為String  Printer<?> getPrinter(A annotation, Class<?> fieldType);  // 將字符串解析為對(duì)象  Parser<?> getParser(A annotation, Class<?> fieldType);}

該接口非常的簡(jiǎn)單,主要就是如何將對(duì)象轉(zhuǎn)String,如何從String轉(zhuǎn)對(duì)象。gJ728資訊網(wǎng)——每日最新資訊28at.com

2.2 自定義注解格式化工廠

public class StringToUserFormatter implements AnnotationFormatterFactory<UserFormat> {    @Override    public Set<Class<?>> getFieldTypes() {      return Set.of(User.class) ;    }    @Override    public Printer<User> getPrinter(UserFormat annotation, Class<?> fieldType) {      return (object, locale) -> object.toString() ;    }    @Override    public Parser<User> getParser(UserFormat annotation, Class<?> fieldType) {      return (text, locale) -> {        Assert.hasText(text, "數(shù)據(jù)錯(cuò)誤") ;        String[] s = text.split(",") ;        User user = new User() ;        user.setId(Long.parseLong(s[0])) ;        user.setName(s[1]) ;        return user ;      } ;    }  }

自定義注解:gJ728資訊網(wǎng)——每日最新資訊28at.com

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)public static @interface UserFormat {}

有了以上的工廠類后,接下來是注冊(cè)到Spring容器中。gJ728資訊網(wǎng)——每日最新資訊28at.com

2.3 注冊(cè)格式化器

@Componentpublic class WebDataTypeConfig implements WebMvcConfigurer {  @Override  public void addFormatters(FormatterRegistry registry) {    registry.addFormatterForFieldAnnotation(new StringToUserFormatter()) ;  }}

完成以上步驟就大功告成了,接下來測(cè)試gJ728資訊網(wǎng)——每日最新資訊28at.com

2.4 測(cè)試

@GetMapping("/user")public User getUser(@UserFormat User user) {  return user ;}

測(cè)試結(jié)果gJ728資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gJ728資訊網(wǎng)——每日最新資訊28at.com

正確的轉(zhuǎn)換為User對(duì)象。基于該注解進(jìn)行格式化不僅僅只用到接口參數(shù)上,還可以用到字段上。gJ728資訊網(wǎng)——每日最新資訊28at.com

2.5 用在字段上

public static class DTO {  @UserFormat  private User user ;  private Integer age ;}

測(cè)試接口:gJ728資訊網(wǎng)——每日最新資訊28at.com

// 注意,可不要改成post,然后用@RequestBody。無用反而報(bào)錯(cuò)@GetMapping("/dto")public DTO save(DTO dto) {  return dto ;}

測(cè)試結(jié)果gJ728資訊網(wǎng)——每日最新資訊28at.com

圖片圖片gJ728資訊網(wǎng)——每日最新資訊28at.com

正確的輸出結(jié)果。gJ728資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-91353-0.htmlSpringBoot優(yōu)雅定制接口參數(shù)格式轉(zhuǎn)換

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Python中的全局變量和局部變量詳解

下一篇: 深入Go原理:協(xié)程間通信基礎(chǔ)Chan

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 影音體驗(yàn)是真的強(qiáng) 簡(jiǎn)單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會(huì)上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現(xiàn)已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 8月總票房已突破10億!《封神》第一:口碑已經(jīng)成了

    8月5日消息,據(jù)燈塔專業(yè)版數(shù)據(jù),截至8月5日9時(shí)35分,8月總票房(含預(yù)售)已突破10億。其中,《封神》以大比分的優(yōu)勢(shì)領(lǐng)先。根據(jù)官方消息,目前該片總票房已經(jīng)超過14.
  • 十個(gè)可以手動(dòng)編寫的 JavaScript 數(shù)組 API

    JavaScript 中有很多API,使用得當(dāng),會(huì)很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對(duì)它們進(jìn)行一次小總結(jié)。現(xiàn)在開始吧。1.forEach()forEach()用于遍歷數(shù)組接收一參
  • Java NIO內(nèi)存映射文件:提高文件讀寫效率的優(yōu)秀實(shí)踐!

    Java的NIO庫提供了內(nèi)存映射文件的支持,它可以將文件映射到內(nèi)存中,從而可以更快地讀取和寫入文件數(shù)據(jù)。本文將對(duì)Java內(nèi)存映射文件進(jìn)行詳細(xì)的介紹和演示。內(nèi)存映射文件概述內(nèi)存
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時(shí)候了!學(xué)弟,最近學(xué)習(xí)的怎么樣啊 了不起學(xué)弟:最近學(xué)習(xí)的還不錯(cuò),每天都在學(xué)習(xí),每天都在進(jìn)步! 了不起:那你最近學(xué)習(xí)的什么呢? 了不起學(xué)弟:最近在學(xué)習(xí)C
  • Temu起訴SHEIN,跨境電商戰(zhàn)事升級(jí)

    來源 | 伯虎財(cái)經(jīng)(bohuFN)作者 | 陳平安日前據(jù)外媒報(bào)道,拼多多旗下跨境電商平臺(tái)Temu正對(duì)競(jìng)爭(zhēng)對(duì)手SHEIN提起新訴訟,訴狀稱Shein&ldquo;利用市場(chǎng)支配力量強(qiáng)迫服裝廠商與之簽訂獨(dú)家
  • 消息稱小米汽車開始篩選交付中心:需至少120個(gè)車位

    IT之家 7 月 7 日消息,日前,有微博簡(jiǎn)介為“汽車行業(yè)從業(yè)者、長(zhǎng)三角一體化擁護(hù)者”的微博用戶 @長(zhǎng)三角行健者 發(fā)文表示,據(jù)經(jīng)銷商集團(tuán)反饋,小米汽車目前
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機(jī)模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产在线播放一区二区三区| 免费亚洲电影| 亚洲午夜羞羞片| 亚洲深夜福利网站| 欧美在线在线| 欧美va亚洲va香蕉在线| 欧美视频官网| 国产视频综合在线| 亚洲高清中文字幕| 亚洲国产导航| 亚洲一区二区三区精品在线| 久久精品视频免费播放| 欧美激情一区二区三级高清视频 | 欧美成人免费全部| 欧美午夜精品久久久久久超碰| 国产欧美日韩综合| 亚洲二区视频在线| 亚洲已满18点击进入久久| 久久久久久久久伊人| 欧美日韩免费高清| 国产综合色精品一区二区三区| 亚洲精品国精品久久99热一| 亚洲欧美日本国产专区一区| 免费久久99精品国产| 国产精品久久久久久av福利软件| 国产一区二区精品久久99| 亚洲精品无人区| 欧美一区二区三区另类| 欧美国产日韩精品| 国产一区二区高清不卡| 99视频在线观看一区三区| 久久国产精品黑丝| 欧美视频一区| 91久久久久久国产精品| 欧美一区二区三区免费观看| 欧美激情一区二区三区在线视频 | 久久影院午夜论| 国产精品久久中文| 亚洲精品美女在线观看| 久久久激情视频| 国产精品久久久久久久久久久久| 亚洲国产精品久久久久秋霞蜜臀| 香蕉av777xxx色综合一区| 欧美日韩一区二区免费在线观看| 在线欧美三区| 欧美在线关看| 国产精品久久久久久亚洲毛片| 91久久在线播放| 久久天天狠狠| 国产一区二区三区四区| 亚洲欧洲av一区二区| 欧美色精品在线视频| 亚洲黄色在线| 老巨人导航500精品| 国产在线精品二区| 香蕉久久精品日日躁夜夜躁| 国产精品v片在线观看不卡| 91久久久在线| 免费在线国产精品| 精品动漫3d一区二区三区| 性感少妇一区| 国产精品久久久久99| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美一区二区三区四区视频| 欧美日韩国产大片| 亚洲精品国产系列| 欧美成人日韩| 亚洲国产毛片完整版| 美国成人直播| 亚洲大片一区二区三区| 久久香蕉国产线看观看av| 国产一区在线免费观看| 欧美在线播放视频| 国产偷自视频区视频一区二区| 午夜精品一区二区三区在线视| 国产精品乱码一区二区三区| 亚洲一区激情| 国产精品露脸自拍| 亚洲综合精品自拍| 国产精品腿扒开做爽爽爽挤奶网站| 中文亚洲欧美| 国产精品乱看| 欧美一区二区在线看| 国产日韩欧美视频| 久久精品国产综合精品| 国内自拍一区| 久久综合九色综合久99| 亚洲第一久久影院| 欧美成人精品在线视频| 亚洲高清不卡av| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品美腿一区在线看 | 久久精品1区| 影音先锋亚洲视频| 欧美激情精品久久久久久大尺度 | 亚洲欧洲精品天堂一级| 欧美激情一二区| 一区二区三区视频在线看| 国产精品国产三级国产普通话99| 亚洲尤物在线视频观看| 国产日韩视频一区二区三区| 久久久久www| 亚洲国内精品在线| 欧美日韩午夜在线视频| 亚洲欧美日韩国产精品| 国产在线播放一区二区三区| 母乳一区在线观看| 99国产成+人+综合+亚洲欧美| 国产精品成人免费| 欧美在线一区二区三区| 亚洲成人在线| 欧美日韩一区二区三区免费看| 亚洲欧美国产高清| 极品日韩久久| 欧美日韩精品免费观看| 亚洲免费综合| 在线观看不卡av| 欧美日韩中文字幕综合视频| 羞羞视频在线观看欧美| 亚洲国产合集| 国产精品电影观看| 久久久蜜桃精品| 99精品黄色片免费大全| 国产日韩欧美麻豆| 蜜桃av一区二区| 亚洲一区在线播放| 悠悠资源网亚洲青| 国产精品爱啪在线线免费观看| 久久超碰97人人做人人爱| 亚洲精品影视| 国产亚洲人成a一在线v站 | 在线观看中文字幕不卡| 欧美日韩亚洲成人| 久久精品首页| 夜夜爽99久久国产综合精品女不卡| 国产欧美日韩不卡免费| 欧美大片第1页| 亚洲欧美日韩国产综合| 亚洲国产精品黑人久久久| 国产精品久久久久9999高清| 免费成人av| 午夜欧美视频| 亚洲美女诱惑| 国内自拍视频一区二区三区| 亚洲日本激情| 国产亚洲视频在线观看| 欧美日韩三级视频| 久久免费视频在线观看| 亚洲一品av免费观看| 亚洲国产精品久久91精品| 国产精品一区久久久| 欧美极品一区二区三区| 久久久国产成人精品| 亚洲在线观看视频| 亚洲精品你懂的| 国内成人精品2018免费看| 欧美手机在线| 欧美寡妇偷汉性猛交| 久久久久久电影| 亚洲欧美日韩区| 日韩视频专区| 亚洲成人中文| 国产一区二区精品在线观看| 国产精品成人免费| 欧美精品免费视频| 久久综合伊人77777麻豆| 午夜宅男久久久| 亚洲一品av免费观看| 亚洲精品久久久久久久久| 国一区二区在线观看| 国产精品一区二区a| 欧美日韩三级| 欧美精品系列| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美一区1区三区3区公司| 一区二区三区鲁丝不卡| 亚洲人成在线观看| 亚洲福利视频免费观看| 黄色国产精品一区二区三区| 国产乱码精品| 国产精品ⅴa在线观看h| 欧美日韩精品在线观看| 欧美激情一二三区| 欧美成人自拍视频| 麻豆国产va免费精品高清在线| 久久久久国产精品一区二区| 欧美一区二区三区日韩| 亚洲欧美国产一区二区三区| 亚洲一级在线观看| 亚洲网站在线观看| 亚洲视频在线观看| 中文一区二区| 亚洲色图自拍| 在线视频你懂得一区二区三区| 日韩视频免费看| 99精品视频网| 一区二区三区高清视频在线观看 | 欧美在线亚洲一区| 欧美一区午夜精品| 欧美专区在线| 久久久久一本一区二区青青蜜月| 久久av一区二区三区| 久久精品国产清自在天天线| 久久狠狠婷婷|