日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

解析Spring Mvc Long類型精度丟失問題

瀏覽:19日期:2023-07-12 13:06:48
目錄背景Spring Boot Controller前端調用方案方案一 @JsonSerialize 注解方案二 全局處理器與swagger集成總結背景

在使用Spring Boot Mvc的項目中,使用Long類型作為id的類型,但是當前端使用Number類型接收Long類型數據時,由于前端精度問題,會導致Long類型數據轉換為Number類型時的后兩位變為0

Spring Boot Controller

以下代碼提供一個Controller,返回一個Dto, Dto的id是Long類型的,其中id的返回數據是1234567890102349123@CrossOrigin 注解表示可以跨域訪問

@RestController()@RequestMappingpublic class LongDemoController { @GetMapping('getLongValue') @CrossOrigin(origins = '*') public GetLongValueDto getLongValue(){GetLongValueDto result = new GetLongValueDto();result.setId(1234567890102349123L);return result; } @Data public static class GetLongValueDto{private Long id; }}前端調用

現在使用jquery調用后端地址,模擬前端調用

<!DOCTYPE html><html><head><meta charset='UTF-8'><title>spring boot mvc long</title></head><body><p>Long:<span id=’resId’></span></p><p>Id類型:<span id=’idType’></span></p> <script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js'></script><script type='text/javascript'>$(document).ready(function(){console.log(’init’);$.ajax({url:'http://localhost:8080/getLongValue'}).then(res=>{console.log({’getLongValue’:res});$(’#resId’).text(res.id);$(’#idType’).text(typeof res.id);})});</script></body></html>

運行結果

通過輸出結果和查看網絡的內容,發現實際上id返回的結果是1234567890102349000,最后幾位都變成了00, 這是因為,javascript的Number類型最大長度是17位,而后端返回的Long類型有19位,導致js的Number不能解析。

解析Spring Mvc Long類型精度丟失問題

方案

既然不能使用js的Number接收,那么前端如何Long類型的數據呢,答案是js使用string類型接收

方案一 @JsonSerialize 注解

修改Dto的id字段,使用@JsonSerialize注解指定類型為string。這個方案有一個問題,就是需要程序員明確指定@JsonSerialize, 在實際的使用過程中,程序員會很少注意到Long類型的問題,只有和前端聯調的時候發現不對。

@Data public static class GetLongValueDto{@JsonSerialize(using= ToStringSerializer.class)private Long id; }

解析Spring Mvc Long類型精度丟失問題

方案二 全局處理器

添加Configuration, 處理 HttpMessageConverter

@Configurationpublic class WebConfiguration implements WebMvcConfigurer { /** * 序列化json時,將所有的long變成string * 因為js中得數字類型不能包含所有的java long值 */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();ObjectMapper objectMapper = new ObjectMapper();SimpleModule simpleModule=new SimpleModule();simpleModule.addSerializer(Long.class, ToStringSerializer.instance);simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);objectMapper.registerModule(simpleModule);jackson2HttpMessageConverter.setObjectMapper(objectMapper);converters.add(0,jackson2HttpMessageConverter); }}

@Data public static class GetLongValueDto{private Long id; }

解析Spring Mvc Long類型精度丟失問題

發現沒有@JsonSerialize注解的信息,前端接收到的數據,也是string類型了。

與swagger集成

上面只是解決了傳輸時的long類型轉string,但是當集成了swagger時,swagger文檔描述的類型仍然是number類型的,這樣在根據swagger文檔生成時,會出現類型不匹配的問題

swagger 文檔集成

pom或gradle

implementation group: ’io.springfox’, name: ’springfox-boot-starter’, version: ’3.0.0’

<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version></dependency>

查看文檔, 發現 GetLongValueDto 描述的id類型是 integer($int64)

解析Spring Mvc Long類型精度丟失問題

swagger long類型描述為string

需要修改swagger的配置, 修改 Docket 的配置

.directModelSubstitute(Long.class, String.class).directModelSubstitute(long.class, String.class)

@Configurationpublic class SwaggerConfig { @Bean public Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())//api的配置路徑.paths(PathSelectors.any())//掃描路徑選擇.build().directModelSubstitute(Long.class, String.class).directModelSubstitute(long.class, String.class).apiInfo(apiInfo()); } private ApiInfo apiInfo() {return new ApiInfoBuilder().title('title') //文檔標題.description('description')//接口概述.version('1.0') //版本號.termsOfServiceUrl(String.format('url'))//服務的域名//.license('LICENSE')//證書//.licenseUrl('http://www.guangxu.com')//證書的url.build(); }}

查看swagger文檔 , 可以看到 文檔中類型已經是 string了

解析Spring Mvc Long類型精度丟失問題

總結 long類型傳輸到前端的兩種方案:注解、修改HttpMessageConverter 使用directModelSubstitute解決swagger文檔中類型描述,避免生成代碼器中描述的類型錯誤

以上就是Spring Mvc Long類型精度丟失的詳細內容,更多關于Spring Mvc Long類型的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品2区| 伊人精品一区| 成人久久一区| 欧美精选视频一区二区| 精品国产aⅴ| 精品视频在线一区二区在线| 日韩av在线播放中文字幕| 天海翼精品一区二区三区| 蜜桃久久精品一区二区| 日韩制服丝袜av| 日韩国产高清在线| 国产精品s色| 欧美国产美女| 欧美一级鲁丝片| 99久久精品费精品国产| 视频一区二区三区在线| 亚洲一区黄色| 日本va欧美va欧美va精品| 欧美亚洲tv| 国产成人免费精品| 91精品精品| 日本午夜免费一区二区| 精品中文字幕一区二区三区四区| 精品三级av| 水蜜桃久久夜色精品一区的特点| 国产区精品区| 日韩和的一区二在线| 亚洲欧美日韩国产| 久久不见久久见免费视频7| 亚洲精品在线影院| 亚洲精品影视| 国产66精品| 蜜桃久久久久久| 日本久久综合| 日韩精品久久理论片| 最新中文字幕在线播放| 日本不卡一区二区| 久久一级电影| 美腿丝袜在线亚洲一区| 免费精品国产| 四虎国产精品免费观看| 中文无码久久精品| 欧美不卡高清| 综合日韩av| 麻豆国产精品视频| 日本亚洲视频| 在线日韩一区| 国产精品亚洲综合色区韩国| 免播放器亚洲| 午夜视频精品| 神马日本精品| 成人国产精品久久| 国产精品777777在线播放 | 亚洲va中文在线播放免费| 91精品福利观看| 亚洲免费毛片| 蜜桃久久精品一区二区| 婷婷亚洲综合| 久久人人99| 午夜久久免费观看| 亚洲精品123区| 日韩视频在线一区二区三区| 一本色道精品久久一区二区三区| 中文字幕系列一区| 久久久久国产精品一区三寸| 国产三级一区| 麻豆国产精品一区二区三区| 麻豆精品国产91久久久久久| 欧美日韩亚洲一区二区三区在线| 日韩精品第一| 国内精品麻豆美女在线播放视频| 国产日韩高清一区二区三区在线 | 欧美国产91| 精品中文字幕一区二区三区| 国产精品亲子伦av一区二区三区| 日韩综合小视频| 国产精品永久| 成人欧美一区二区三区的电影| 精品91福利视频| 91中文字幕精品永久在线| 国产99久久久国产精品成人免费| 免费精品国产的网站免费观看| 亚洲中午字幕| 日本午夜精品视频在线观看| 久久精品国产成人一区二区三区| 美女av在线免费看| 久久国产小视频| 亚洲婷婷丁香| 日韩欧美中文字幕一区二区三区| 欧美激情视频一区二区三区免费 | 极品裸体白嫩激情啪啪国产精品| 国产91在线精品| 国产毛片一区| 麻豆视频久久| 亚洲精品1区| 国产精品分类| 蜜桃成人av| 久久精品国产99国产精品| 国产日韩专区| 精品国产一区二区三区性色av| 欧美日韩精品免费观看视频完整| 欧美日韩1区| 国产99精品| 电影91久久久| 日韩国产精品久久久| 精品一区在线| 国产66精品| 国产日韩一区二区三免费高清| 精品在线99| www.com.cn成人| 美女视频黄免费的久久| 好看不卡的中文字幕| 久久精品国产成人一区二区三区| 免费黄网站欧美| 91精品一区国产高清在线gif | 国产精品久久久久久久久久10秀 | 国产日韩专区| 欧美日韩中文一区二区| 欧美日韩a区| 日欧美一区二区| 久久不射中文字幕| 国产主播一区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 久久中文在线| 国产精品一区二区精品视频观看| 婷婷激情综合| 99精品在线免费在线观看| 麻豆国产在线| 91青青国产在线观看精品| 久久三级毛片| 97精品在线| 99久久夜色精品国产亚洲1000部| 91精品韩国| 伊人久久亚洲美女图片| 欧美日韩四区| 日韩精品午夜视频| 欧美午夜三级| 国产精品一区二区美女视频免费看| 日韩激情视频网站| 久久精品97| 久久不卡日韩美女| 日韩久久电影| 黄色亚洲大片免费在线观看| 中文一区一区三区免费在线观| 日韩av一二三| 成人日韩精品| 欧美日韩精品一本二本三本| 国产亚洲一级| 91国内精品| 精品久久精品| 欧美网站在线| 国产精品午夜一区二区三区| а√天堂8资源中文在线| 午夜欧美精品| 久久精品99国产精品日本| 欧美激情网址| 99精品国产一区二区三区| 亚洲日韩中文字幕一区| 91中文字幕精品永久在线| 亚洲视频二区| 中文在线а√在线8| 午夜性色一区二区三区免费视频| 精品一区二区三区中文字幕视频 | 日韩国产欧美三级| 日韩欧美一区二区三区在线观看| 久热精品在线| 麻豆网站免费在线观看| 首页欧美精品中文字幕| 麻豆精品一区二区综合av| 日韩1区2区| 日韩二区在线观看| 欧美日韩国产在线观看网站| 热久久久久久| 石原莉奈在线亚洲二区| av在线资源| 国产高清精品二区| 亚洲免费福利一区| 欧美福利一区| 欧美日韩免费观看视频| 国产欧美日韩影院| 蜜臀久久99精品久久久画质超高清 | 模特精品在线| 久久精品观看| 成人在线免费观看91| 日本视频在线一区| 亚洲香蕉久久| 91久久中文| 日韩中文影院| 韩国久久久久久| 精品视频网站| 福利一区二区三区视频在线观看| 视频一区免费在线观看| 樱桃成人精品视频在线播放| 99精品在线免费在线观看| 国产福利91精品一区二区| 国产精品一区二区av日韩在线| 91精品尤物| 久久丁香四色| 国产精品99久久精品| 日韩国产一区二区|