摘要:你在寫接口的時候難免會遇到接收類型的日期參數例如轉換成類型情況。
你在寫接口的時候難免會遇到接收String類型的日期參數(例如:2018-04-21 11:57:36)轉換成Date類型情況。
百度了一番,發現大多數答案都是這樣子的:
@Configuration public class WebConfigBeans { @Autowired RequestMappingHandlerAdapter requestMappingHandlerAdapter; @PostConstruct public void initEditableValidation(){ ConfigurableWebBindingInitializer configurableWebBindingInitializer = (ConfigurableWebBindingInitializer) requestMappingHandlerAdapter.getWebBindingInitializer(); if(configurableWebBindingInitializer.getConversionService()!=null){ GenericConversionService service = (GenericConversionService) configurableWebBindingInitializer.getConversionService(); service.addConverter(new StringToDateConverter()); } } }
上面的代碼確實解決了問題,可是,代碼有點不綠色節能。
以下是我的實現:
配置配置全局的String轉Date參數轉換器,可以簡單解決這個問題!
web配置如下(spring boot 1.x 2.x 通用):
@Configuration public class SpringMVCConfig extends WebMvcConfigurationSupport{ /** * 添加自定義的Converters和Formatters. */ @Override protected void addFormatters(FormatterRegistry registry) { registry.addConverter(new StringToDateConverter()); } }
綠色環保更節能!
String轉Date轉換器實現如下(好吧,我承認下面的代碼這是我抄來的):
public class StringToDateConverter implements Converter{ private static final String dateFormat = "yyyy-MM-dd HH:mm:ss"; private static final String shortDateFormat = "yyyy-MM-dd"; @Override public Date convert(String source) { if (StringUtils.isBlank(source)) { return null; } source = source.trim(); try { if (source.contains("-")) { SimpleDateFormat formatter; if (source.contains(":")) { formatter = new SimpleDateFormat(dateFormat); } else { formatter = new SimpleDateFormat(shortDateFormat); } return formatter.parse(source); } else if (source.matches("^d+$")) { Long lDate = new Long(source); return new Date(lDate); } } catch (Exception e) { throw new RuntimeException(String.format("parser %s to Date fail", source)); } throw new RuntimeException(String.format("parser %s to Date fail", source)); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69419.html
摘要:看成提供的一個特殊的攔截器。是一個,用于定義最主要用途,和方法,適用于所有使用方法攔截。為所有封裝統一異常處理代碼。為所有設置全局變量。用于為所有設置某個類型的數據轉換器。 Spring3.2開始提供的新注解,控制器增強(AOP),最主要的應用是做統一的異常處理。@ControllerAdvice(看成spring mvc提供的一個特殊的攔截器)。@ControllerAdvice是一...
摘要:時間年月日星期四說明本文部分內容均來自慕課網。哈希表實現命令,將哈希表中的域的值設為實現命令,返回哈希表中給定域的值實現命令,刪除哈希表中的一個或多個指定域,不存在的域將被忽略。實現命令,返回哈希表中,所有的域和值。 時間:2018年04月19日星期四說明:本文部分內容均來自慕課網。@慕課網:https://www.imooc.com教學源碼:https://github.com/zc...
摘要:所以適合簡單屬性值的獲取,不知何復雜對象的綁定。綁定對象綁定綁定列表轉換以及默認值綁定過程回調函數,高度定制綁定開始綁定成功綁定失敗沒有找到匹配的屬性綁定結束 Spring Boot中的屬性綁定 之前翻譯了一篇不怎么樣的文章,主要是翻譯的水平有限,自己翻譯的云里霧里,發現平時只會有@ConfigurationProperties注解,對SpringBoot強大的屬性綁定知之甚少,所以以...
摘要:請求重試攔截器錯誤解碼器在發生請求錯誤包括發生異常或者響應數據不符合預期的時候,錯誤解碼器可將相關信息解碼到自定義異常中。 在SpringBoot項目直接使用okhttp、httpClient或者RestTemplate發起HTTP請求,既繁瑣又不方便統一管理。因此,在這里推薦一個適...
摘要:大家自己了解一下的使用方法,我這里就不進行詳細的講述了。啟動方式兩種方式都可以主函數啟動或者驗證訪問頁面,驗證是否輸出了當前時間。為了提高大家學習效果,錄制了同步的視頻課程,還望大家支持視頻課程 Spring Boot - 初識 Hello World 索引 Spring Boot - 初識 Hello World Spring Boot - Servlet、過濾器、監聽器、攔截器 ...
閱讀 1537·2021-11-24 10:17
閱讀 1031·2021-09-29 09:43
閱讀 2165·2021-09-23 11:21
閱讀 2160·2019-08-30 14:13
閱讀 1295·2019-08-29 13:58
閱讀 3157·2019-08-28 17:51
閱讀 1803·2019-08-26 13:29
閱讀 2973·2019-08-26 10:13