最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于SpringBoot項(xiàng)目遇到的坑--Date入?yún)栴}

 更新時(shí)間:2021年10月25日 10:51:22   作者:殺豬了  
這篇文章主要介紹了SpringBoot項(xiàng)目遇到的坑--Date入?yún)栴},具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot Date入?yún)栴}

springboot項(xiàng)目遇到的坑-----使用@ResponseBody @RequestBody,對(duì)象Date 類型入?yún)?,返回json格式化

1.傳輸中的Date類型時(shí)間不準(zhǔn)確

時(shí)區(qū)會(huì)有8個(gè)小時(shí)偏差

原因分析

而SpringBoot默認(rèn)的是Jackson框架轉(zhuǎn)換,而Jackson默認(rèn)的時(shí)間時(shí)區(qū)是GMT,對(duì)于中國(guó)時(shí)間少8個(gè)小時(shí)

解決方案

在傳輸?shù)腄ate屬性字段上加此注解

@JsonFormat(timezone = “GMT+8”,pattern = “yyyy-MM-dd”)

在傳輸實(shí)體類中定義一個(gè)Long型成員變量存儲(chǔ)時(shí)間戳 傳輸過程中只傳時(shí)間戳 后臺(tái)將其進(jìn)行轉(zhuǎn)換為Date然后賦值

   class Test{
		private Date time;
		private Long timeLong;
   }
   
   @PostMapping("/test")
   public Test test(@RequestBody Test test){
       test.setTime(new Date(test.getTimeLone()));
       return test;
   }

2.后臺(tái)返回的json數(shù)據(jù)

其中Date類型接收會(huì)自動(dòng)轉(zhuǎn)換成Long類型的時(shí)間戳

在這里插入圖片描述

原因分析:

springboot1.x版本默認(rèn)的json處理是jackson 會(huì)將date字段返回時(shí)間戳

解決方案:

全局配置

spring:  
 jackson:
   time-zone: GMT+8
   date-format: yyyy-MM-dd HH:mm:ss

如果個(gè)別實(shí)體需要使用其他格式的 pattern,在實(shí)體上加入注解即可

@JsonFormat(timezone = “GMT+8”,pattern = “yyyy-MM-dd”)
private Date time;

在這里插入圖片描述

springboot接口入?yún)⒌囊恍﹩栴}

最近在工作中遇到一個(gè)接口入?yún)㈩愋娃D(zhuǎn)換錯(cuò)誤未被處理的問題,于是整理了一些關(guān)于springmvc入?yún)⒌膯栴}

入?yún)⒔壎?/h3>

1、入?yún)⒅形覀冏畛R姷氖莇ate類型的參數(shù)轉(zhuǎn)換,這個(gè)可以通過注解來實(shí)現(xiàn)參數(shù)類型的轉(zhuǎn)換,只需在bean對(duì)象的屬性上方添加注解@DateTimeFormat(pattern=“yyyy-MM-dd”),pattern為時(shí)間對(duì)象的格式化

在這里插入圖片描述

2、在controller類里定義數(shù)據(jù)綁定類

/**
     * 在controller層中加入一段數(shù)據(jù)綁定代碼
     * @param webDataBinder
     */
    @InitBinder
    public void initBinder(WebDataBinder webDataBinder) throws Exception{
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        simpleDateFormat.setLenient(false);
        webDataBinder.registerCustomEditor(Date.class , new CustomDateEditor(simpleDateFormat , true));
    }

3、定義全局的參數(shù)類型轉(zhuǎn)換器

首先建立一個(gè)實(shí)現(xiàn)Converter的轉(zhuǎn)換器

 public class DateConverter implements Converter<String,Date> {
     private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     @Override
     public Date convert(String s) {
         if ("".equals(s) || s == null) {
            return null;
         }
         try {
            return simpleDateFormat.parse(s);
         } catch (ParseException e) {
             e.printStackTrace();
         }
         return null;
     }
 }

然后將該參數(shù)轉(zhuǎn)換器綁定到springmvc的配置中

@Configuration
public class WebConfigBeans {
    @Autowired
    private RequestMappingHandlerAdapter handlerAdapter;
    /**
     * 增加字符串轉(zhuǎn)日期的功能
     */
    @PostConstruct
    public void initEditableAvlidation() {
        ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer)handlerAdapter.getWebBindingInitializer();
        if(initializer.getConversionService()!=null) {
            GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService();           
            genericConversionService.addConverter(new StringToDateConverter());
        }
    }
}

入?yún)㈠e(cuò)誤全局異常處理

在springmvc的模型中,若參數(shù)轉(zhuǎn)換出現(xiàn)異常,會(huì)直接跳轉(zhuǎn)到默認(rèn)的錯(cuò)誤400頁面,如果我們做的為接口,需返回一個(gè)代表錯(cuò)誤的json對(duì)象時(shí),我們可以使用一個(gè)全局的異常處理類,類上添加注解@RestControllerAdvice使得異常處理后返回rest風(fēng)格的對(duì)象,使用@ControllerAdvice返回頁面

@RestControllerAdvice
public class ControllerAdvice  {
@ExceptionHandler(value = {org.springframework.validation.BindException.class})
    public BaseResp dealDateFarmatException(Throwable exception) {
        BaseResp resp = new BaseResp();
        resp.setCode("400");
        resp.setStatus(false);
        resp.setMsg("參數(shù)類型錯(cuò)誤");
        return resp;
    }
    }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Java實(shí)現(xiàn)一個(gè)不同難度(高、中、低)的猜數(shù)字游戲

    使用Java實(shí)現(xiàn)一個(gè)不同難度(高、中、低)的猜數(shù)字游戲

    本文介紹了一個(gè)增強(qiáng)版的猜數(shù)字游戲,包括菜單打印、游戲維持、邏輯功能選擇和源代碼展示,游戲通過隨機(jī)數(shù)生成和邏輯判斷來維持游戲進(jìn)程,用戶可以選擇不同的難度,源代碼展示了如何實(shí)現(xiàn)這三種不同難度的猜數(shù)字游戲,為玩家?guī)砀嗵魬?zhàn)和樂趣,需要的朋友可以參考下
    2024-09-09
  • hibernate 常用方法介紹

    hibernate 常用方法介紹

    這篇文章介紹了hibernate的常用方法,有需要的朋友可以參考一下
    2013-09-09
  • MyBatis-Plus里面的增刪改查詳解(化繁為簡(jiǎn))

    MyBatis-Plus里面的增刪改查詳解(化繁為簡(jiǎn))

    這篇文章主要給大家介紹了關(guān)于MyBatis-Plus里面的增刪改查的相關(guān)資料,Mybatis-Plus是一個(gè)基于Mybatis的增強(qiáng)工具,可以簡(jiǎn)化Mybatis的開發(fā),提高開發(fā)效率,需要的朋友可以參考下
    2023-07-07
  • 聊聊Spring AOP @Before @Around @After等advice的執(zhí)行順序

    聊聊Spring AOP @Before @Around @After等advice的執(zhí)行順序

    這篇文章主要介紹了聊聊Spring AOP @Before @Around @After等advice的執(zhí)行順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java使用CountDownLatch實(shí)現(xiàn)統(tǒng)計(jì)任務(wù)耗時(shí)

    Java使用CountDownLatch實(shí)現(xiàn)統(tǒng)計(jì)任務(wù)耗時(shí)

    這篇文章主要為大家詳細(xì)介紹了Java如何使用CountDownLatch實(shí)現(xiàn)統(tǒng)計(jì)任務(wù)耗時(shí)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-06-06
  • 減小Maven項(xiàng)目生成的JAR包體積實(shí)現(xiàn)提升運(yùn)維效率

    減小Maven項(xiàng)目生成的JAR包體積實(shí)現(xiàn)提升運(yùn)維效率

    在Maven構(gòu)建Java項(xiàng)目過程中,減小JAR包體積可通過排除不必要的依賴和使依賴jar包獨(dú)立于應(yīng)用jar包來實(shí)現(xiàn),在pom.xml文件中使用<exclusions>標(biāo)簽排除不需要的依賴,有助于顯著降低JAR包大小,此外,將依賴打包到應(yīng)用外,可減少應(yīng)用包的體積
    2024-10-10
  • 淺析 Java多線程

    淺析 Java多線程

    這篇文章主要介紹了Java多線程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java線程相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-09-09
  • 使用Java實(shí)現(xiàn)壓縮圖片,視頻和音頻

    使用Java實(shí)現(xiàn)壓縮圖片,視頻和音頻

    在?Java?中,要實(shí)現(xiàn)視頻壓縮通常需要使用外部的庫(kù)或工具,下面就跟隨小編一起來看看如何利用這些庫(kù)實(shí)現(xiàn)壓縮圖片,視頻和音頻功能吧
    2024-03-03
  • java集合框架線程同步代碼詳解

    java集合框架線程同步代碼詳解

    這篇文章主要介紹了java集合框架線程同步代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Spring中Bean命名的方式總結(jié)

    Spring中Bean命名的方式總結(jié)

    在?Spring?框架中,每個(gè)?bean?必須至少有一個(gè)唯一的名稱,這篇文章主要為大家詳細(xì)介紹了Spring中Bean命名的各種方式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12

最新評(píng)論

包头市| 和顺县| 彝良县| 平阳县| 河间市| 梅州市| 滦平县| 金溪县| 涿鹿县| 沁源县| 嘉兴市| 珲春市| 德令哈市| 台南县| 嵊泗县| 江永县| 普格县| 松滋市| 兴业县| 卓资县| 九龙城区| 叙永县| 双辽市| 洮南市| 淳化县| 毕节市| 开江县| 赤水市| 辛集市| 洱源县| 沙田区| 汝城县| 中阳县| 定兴县| 蒙城县| 高密市| 福建省| 长汀县| 乐陵市| 宁城县| 营口市|