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

當前位置:首頁 > 科技  > 軟件

Spring強大的數據格式化處理功能,你必須得知道

來源: 責編: 時間:2023-09-20 21:55:57 420觀看
導讀環境:Springboot2.6.12通常,當需要實現通用類型轉換邏輯時,可以使用轉換器SPI?例如,用于在java.util.Date和Long之間轉換。當你在客戶端環境(如web應用程序)中工作并且需要解析和打印本地化字段值時,可以使用格式化程序SPI

環境:Springboot2.6.12II728資訊網——每日最新資訊28at.com

通常,當需要實現通用類型轉換邏輯時,可以使用轉換器SPI?例如,用于在java.util.Date和Long之間轉換。當你在客戶端環境(如web應用程序)中工作并且需要解析和打印本地化字段值時,可以使用格式化程序SPI。ConversionService為兩個SPI提供統一的類型轉換API。II728資訊網——每日最新資訊28at.com

在Springboot環境下如何自定義數據類型的轉換?II728資訊網——每日最新資訊28at.com

Formatter SPI

Formatter SPI 實現字段格式化邏輯非常簡單,而且是強類型的。以下列表顯示格式化程序接口定義:II728資訊網——每日最新資訊28at.com

package org.springframework.format;public interface Formatter<T> extends Printer<T>, Parser<T> {}

Formatter 從Printer和Parser構建塊接口擴展而來。以下列表顯示了這兩個接口的定義:II728資訊網——每日最新資訊28at.com

public interface Printer<T> {  String print(T fieldValue, Locale locale);}import java.text.ParseException;public interface Parser<T> {  T parse(String clientValue, Locale locale) throws ParseException;}

要創建自己的Formatter格式化程序,只需要實現上面的Formatter接口。將泛型T替換為需要格式化的對象類型?—?例如,java.util.Date。實現print()操作以打印T的實例以在客戶端區域中顯示。實現parse()操作,從客戶端語言環境返回的格式化表示中解析T的實例。如果解析嘗試失敗,格式化程序應該拋出ParseException或IllegalArgumentException。注意確保格式化程序實現是線程安全的。II728資訊網——每日最新資訊28at.com

自定義Formatter程序

根據用戶輸入的信息,每個字段信息通過逗號分割,通過Formatter程序將其轉換為Users對象。如輸入:張三,30;將信息解析為Users對象姓名為張三,年齡為30。II728資訊網——每日最新資訊28at.com

public class Users {  private String name ;  private Integer age ;}

格式化程序:II728資訊網——每日最新資訊28at.com

public class UsersFormatter implements Formatter<Users> {  @Override  public String print(Users object, Locale locale) {    if (Objects.isNull(object)) {      return "" ;    }    return "【name = " + object.getName() + ", age = " + object.getAge() + "】" ;  }  @Override  public Users parse(String text, Locale locale) throws ParseException {    if (text == null || text.trim().length() == 0) {      return null ;    }    Users user = new Users() ;    // 下面做簡單處理,不做校驗    String[] values = text.split(",") ;    user.setName(values[0]) ;    user.setAge(Integer.parseInt(values[1]));    return user ;  }}

格式化程序定義完后,需要注冊到系統中讓系統能夠知道如何進行轉換。II728資訊網——每日最新資訊28at.com

@Configurationpublic class WebConfig implements WebMvcConfigurer {  @Override  public void addFormatters(FormatterRegistry registry) {    registry.addFormatter(new UsersFormatter()) ;  }  }

測試接口:II728資訊網——每日最新資訊28at.com

@GetMapping("/save")public Object save(Users users) {  return users ;}

輸出:II728資訊網——每日最新資訊28at.com

圖片圖片II728資訊網——每日最新資訊28at.com

基于注解的Formatter

可以按字段類型或注解配置字段格式。要將注解綁定到格式化程序,需要實現
AnnotationFormatterFactory。以下顯示了AnnotationFormatterFactory接口的定義:
II728資訊網——每日最新資訊28at.com

package org.springframework.format;public interface AnnotationFormatterFactory<A extends Annotation> {  Set<Class<?>> getFieldTypes();  Printer<?> getPrinter(A annotation, Class<?> fieldType);  Parser<?> getParser(A annotation, Class<?> fieldType);}

要創建實現,請執行以下操作:II728資訊網——每日最新資訊28at.com

參數化要與格式邏輯關聯的字段annotationType?—?例如org.springframework.format.annoation.DateTimeFormat。II728資訊網——每日最新資訊28at.com

  • getFieldTypes()返回可以使用注釋的字段類型。
  • getPrinter()返回Printer以打印帶注釋字段的值。
  • getParser()返回一個Parser來解析帶注釋字段的值。

自定義注解格式化程序

自定義注解類,用來需要格式化的字段。II728資訊網——每日最新資訊28at.com

@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})public @interface AgeFormat {}

自定義注解格式化程序。II728資訊網——每日最新資訊28at.com

public final class AgeFormatAnnotationFormatterFactory        implements AnnotationFormatterFactory<AgeFormat> {  public Set<Class<?>> getFieldTypes() {    Set<Class<?>> types = new HashSet<Class<?>>() ;    types.add(Integer.class) ;    return types;  }  @Override  public Printer<Integer> getPrinter(AgeFormat annotation, Class<?> fieldType) {    return new AgeFormatter() ;  }  @Override  public Parser<Integer> getParser(AgeFormat annotation, Class<?> fieldType) {    return new AgeFormatter() ;  }    private class AgeFormatter implements Formatter<Integer> {    @Override    public String print(Integer object, Locale locale) {      if (object == null) {        return "" ;      }      return object.toString() ;    }        @Override    public Integer parse(String text, Locale locale) throws ParseException {      if (text == null || text.trim().length() == 0) {        return -1 ;      }      return Integer.parseInt(text.substring(1)) ;    }  }}

注冊格式化程序。II728資訊網——每日最新資訊28at.com

@Configurationpublic class WebConfig implements WebMvcConfigurer {  @Override  public void addFormatters(FormatterRegistry registry) {    registry.addFormatterForFieldAnnotation(new AgeFormatAnnotationFormatterFactory()) ;  }}

Users.age字段添加注解。II728資訊網——每日最新資訊28at.com

public class Users {  private String name ;  @AgeFormat  private Integer age ;}

測試接口。II728資訊網——每日最新資訊28at.com

@GetMapping("/save2")public Object save2(Users users) {  return users ;}

II728資訊網——每日最新資訊28at.com

注意這里的年齡前面加了一個‘s’字符。II728資訊網——每日最新資訊28at.com

注解添加到參數上

格式化程序:II728資訊網——每日最新資訊28at.com

public final class UsersFormatAnnotationFormatterFactory implements AnnotationFormatterFactory<UsersFormat> {  public Set<Class<?>> getFieldTypes() {    Set<Class<?>> types = new HashSet<Class<?>>() ;    types.add(Users.class) ;    return types;  }  @Override  public Printer<?> getPrinter(UsersFormat annotation, Class<?> fieldType) {    return new UsersFormatter();  }  @Override  public Parser<?> getParser(UsersFormat annotation, Class<?> fieldType) {    return new UsersFormatter() ;  }}

接口:II728資訊網——每日最新資訊28at.com

@GetMapping("/save3")public Object save3(@UsersFormat Users users) {  return users ;}

II728資訊網——每日最新資訊28at.com


II728資訊網——每日最新資訊28at.com

完畢!!!II728資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-10556-0.htmlSpring強大的數據格式化處理功能,你必須得知道

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何使用Python構建OTP驗證系統?

下一篇: 小心這個陷阱: 為什么JS中的 Every()對空數組總返回 True

標簽:
  • 熱門焦點
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • 《英雄聯盟》夏季賽總決賽今日開打!JDG對陣LNG首發名單來了 Knight:準備三連冠

    8月5日消息,今日17:00,《英雄聯盟》2023LPL夏季賽總決賽將正式開打,由JDG對陣LNG。對兩支隊伍來說,這場比賽不僅要爭奪夏季賽冠軍,更要決定誰才是LPL賽區一
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己&ldquo;當家&rdquo;的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • 蘋果公司要求三星和LG Display生產「無邊框」OLED iPhone顯示屏

    據 The Elec 報道,蘋果已要求其供應商為未來的 iPhone 型號開發「無邊框」OLED 顯示面板。蘋果顯然已要求三星和 LG Display 開發新的 OLED 顯示面
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品久久久久久久久免费桃花 | 亚洲国产精品999| 99pao成人国产永久免费视频| 国产女精品视频网站免费| 亚洲午夜在线| 精品999成人| 在线观看日韩www视频免费| 亚洲免费电影在线观看| 亚洲天堂av在线免费观看| 欧美一区二区三区四区高清| 久久人体大胆视频| 久久久国产视频91| 激情成人av在线| 小辣椒精品导航| 亚洲伦理在线观看| 国产日韩一区欧美| 午夜国产精品影院在线观看| 国产精品素人视频| 欧美激情小视频| 久久资源在线| 亚洲欧美一区二区三区在线| 99精品国产一区二区青青牛奶| 国产精品专区第二| 国产精品国产自产拍高清av| 欧美精品一区二区在线观看| 牛牛精品成人免费视频| 久久婷婷国产综合精品青草| 欧美日韩国语| 欧美性猛交99久久久久99按摩| 久久裸体视频| 欧美日韩中文字幕在线视频| 欧美日韩国产精品一卡| 国内精品久久久久久影视8| 韩国av一区二区三区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 一区二区av在线| 亚洲精品视频一区| 91久久久国产精品| 亚洲免费成人av| 亚洲网在线观看| 亚洲一区二区免费看| 亚洲制服丝袜在线| 欧美一区二区久久久| 久久精品理论片| 久色成人在线| 欧美另类在线播放| 黄网站免费久久| 亚洲一区二区免费视频| 欧美a级在线| 欧美日韩一区二区在线观看视频| 欧美日韩亚洲国产精品| 在线看片一区| 亚洲另类春色国产| 中日韩午夜理伦电影免费| 中文国产亚洲喷潮| 女人色偷偷aa久久天堂| 欧美成人免费在线| 国产在线精品二区| 一区二区三区在线观看欧美| 亚洲在线国产日韩欧美| 欧美日韩国产在线| 91久久夜色精品国产网站| 亚洲精品美女久久久久| 亚洲女人天堂av| 久久久欧美一区二区| 欧美激情在线观看| 国产九九精品视频| 亚洲国产二区| 一区二区三区精品久久久| 欧美成人中文字幕| 欧美性事免费在线观看| 韩国福利一区| 日韩一级精品视频在线观看| 性xx色xx综合久久久xx| 麻豆freexxxx性91精品| 国产精品国产三级国产a| 99精品热视频| 欧美色图一区二区三区| 激情成人av| 亚洲精品国产精品久久清纯直播| 亚洲欧美精品一区| 欧美成人激情在线| 亚洲高清在线观看| 亚洲网站在线看| 欧美日韩一区二| 一区二区三区在线免费观看| 一本色道**综合亚洲精品蜜桃冫| 欧美精品免费在线| 日韩香蕉视频| 美女主播一区| 国产精品伦理| 亚洲第一在线综合在线| 卡一卡二国产精品| 亚洲国产日韩欧美综合久久| 午夜视频精品| 欧美乱妇高清无乱码| 怡红院精品视频| 麻豆精品一区二区av白丝在线| 国产欧美精品va在线观看| 欧美一区在线视频| 欧美精品18videos性欧美| 国产一区二区三区在线观看免费视频| 一区二区国产在线观看| 国产精品福利影院| 亚洲人成小说网站色在线| 久久国产精品久久久久久久久久| 欧美日韩一视频区二区| 在线观看91精品国产入口| 亚洲免费一在线| 国产毛片一区二区| 一区二区三区**美女毛片| 国产精品国产成人国产三级| 欧美一二三区在线观看| 在线观看国产精品网站| 欧美人与性动交cc0o| 亚洲在线一区| 欧美系列一区| 一区二区三区精品国产| 国产精品一区毛片| 亚洲小视频在线| 国产精品系列在线播放| 欧美在线播放一区二区| 国产精品vvv| 欧美一区二区三区视频| 国产精品永久在线| 久久久久久婷| 激情综合在线| 欧美日本国产| 欧美一区二区三区啪啪| 亚洲日本成人在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 在线观看av不卡| 欧美日韩美女一区二区| 日韩午夜精品| 国产日韩欧美一区| 欧美成人精品h版在线观看| 亚洲黄网站在线观看| 国产精品高潮久久| 美女久久网站| 午夜精彩视频在线观看不卡| 国产精品欧美日韩| 先锋影音国产精品| 亚洲国产日韩精品| 欧美国产大片| 午夜天堂精品久久久久| 亚洲精品日韩久久| 国产一区二区三区久久悠悠色av| 欧美中文字幕在线播放| 亚洲激情视频在线播放| 国产精品一区一区三区| 欧美aⅴ一区二区三区视频| 午夜精品久久久久99热蜜桃导演| 亚洲乱码国产乱码精品精天堂| 国产日韩欧美综合在线| 久久久人成影片一区二区三区| 中文在线一区| 国产精品色在线| 欧美国产视频一区二区| 久久精品论坛| 亚洲精品免费在线| 国产一区二区三区四区五区美女 | 欧美日韩综合视频| 麻豆免费精品视频| 欧美专区在线| 亚洲激情网站| 韩国久久久久| 国产乱码精品一区二区三区不卡| 欧美日韩国产成人在线| 久久躁日日躁aaaaxxxx| 日韩香蕉视频| 亚洲福利视频一区| 国产一区二区三区观看| 男女av一区三区二区色多| 欧美一区永久视频免费观看| 亚洲天堂偷拍| 日韩视频中文| 亚洲精品国久久99热| 1024成人| 国产一区二区三区久久精品| 国产精品毛片va一区二区三区 | 亚洲国产精品一区二区尤物区| 国内一区二区三区在线视频| 国产欧美日韩视频| 国产精品女人久久久久久| 欧美日韩在线综合| 欧美另类在线观看| 欧美激情五月| 欧美精品亚洲二区| 午夜视频久久久久久| 亚洲视频在线一区观看| 国外成人在线视频网站| 欧美精品18+| 午夜久久美女| 亚洲在线日韩| 亚洲在线观看视频| 亚洲国产专区| 亚洲丰满少妇videoshd| 国产精品女同互慰在线看| 国产精品久久二区| 国产精品区一区| 国产女人精品视频| 国产日韩综合| 黑人一区二区| 亚洲高清激情|