摘要:如下所示不配置默認(rèn)使用自定義是的概念,用于自定義轉(zhuǎn)換實(shí)現(xiàn),比如自定義格式化日期自動(dòng)截取小數(shù)點(diǎn)等。下面提供一個(gè)的簡單示例,具體的使用請參考官方文檔。
ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動(dòng)化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。
FastJson是阿里巴巴提供的一款Json格式化插件。
ApiBoot提供了FastJson驅(qū)動(dòng)轉(zhuǎn)換接口請求的Json字符串?dāng)?shù)據(jù),添加該依賴后會(huì)自動(dòng)格式化時(shí)間(格式:YYYY-MM-DD HH:mm:ss)、空對(duì)象轉(zhuǎn)換為空字符串返回、空Number轉(zhuǎn)換為0等,還會(huì)自動(dòng)裝載ValueFilter接口的實(shí)現(xiàn)類來完成自定義的數(shù)據(jù)格式轉(zhuǎn)換。
引入Http ConverterApiBoot Http Converter使用非常簡單,只需要在pom.xml添加如下依賴:
org.minbox.framework api-boot-starter-http-converter
ApiBoot所提供的依賴都不需要添加版本號(hào),具體查看ApiBoot版本依賴
相關(guān)配置ApiBoot Http Converter通過使用SpringBoot內(nèi)置的配置參數(shù)名來確定是否開啟,在SpringBoot內(nèi)可以通過spring.http.converters.preferred-json-mapper來修改首選的Json格式化插件,SpringBoot已經(jīng)提供了三種,分別是:gson、jackson、jsonb,當(dāng)我們配置該參數(shù)為fastJson或不進(jìn)行配置就會(huì)使用ApiBoot Http Converter提供的fastJson來格式化轉(zhuǎn)換Json返回?cái)?shù)據(jù)。
如下所示:
spring: http: converters: # 不配置默認(rèn)使用fastJson preferred-json-mapper: fastJson自定義ValueFilter
ValueFilter是FastJson的概念,用于自定義轉(zhuǎn)換實(shí)現(xiàn),比如:自定義格式化日期、自動(dòng)截取小數(shù)點(diǎn)等。
下面提供一個(gè)ValueFilter的簡單示例,具體的使用請參考FastJson官方文檔。
ValueFilter示例在使用ValueFilter時(shí)一般都會(huì)搭配一個(gè)對(duì)應(yīng)的自定義@Annotation來進(jìn)行組合使用,保留自定義小數(shù)點(diǎn)位數(shù)的示例如下所示:
創(chuàng)建 BigDecimalFormatter Annotation
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface BigDecimalFormatter { /** * 小數(shù)位數(shù),默認(rèn)保留兩位 * @return */ int scale() default 2; }
創(chuàng)建 BigDecimal ValueFilter
public class BigDecimalValueFilter implements ValueFilter { /** * logback */ Logger logger = LoggerFactory.getLogger(BigDecimalValueFilter.class); /** * @param object 對(duì)象 * @param name 對(duì)象的字段的名稱 * @param value 對(duì)象的字段的值 */ @Override public Object process(Object object, String name, Object value) { if (ValidateTools.isEmpty(value) || !(value instanceof BigDecimal)) { return value; } return convertValue(object, name, value); } /** * 轉(zhuǎn)換值 * * @param object 字段所屬對(duì)象實(shí)例 * @param name 字段名稱 * @param value 字段的值 * @return */ Object convertValue(Object object, String name, Object value) { try { /** * 反射獲取field */ Field field = object.getClass().getDeclaredField(name); /** *判斷字段是否存在@BigDecimalFormatter注解 */ if (field.isAnnotationPresent(BigDecimalFormatter.class)) { BigDecimalFormatter bigDecimalFormatter = field.getAnnotation(BigDecimalFormatter.class); // 執(zhí)行格式化 BigDecimal decimal = (BigDecimal) value; System.out.println(bigDecimalFormatter.scale()); // 保留小數(shù)位數(shù),刪除多余 value = decimal.setScale(bigDecimalFormatter.scale(), BigDecimal.ROUND_DOWN).doubleValue(); } } catch (Exception e) { logger.error("格式化BigDecimal字段出現(xiàn)異常:{}", e.getMessage()); } return value; } }
使用 BigDecimalFormatter Annotation
@BigDecimalFormatter private BigDecimal decimalValue;
本章源碼地址:https://github.com/hengboy/api-boot/tree/master/api-boot-samples/api-boot-sample-http-converter
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74055.html
摘要:是一款基于的接口服務(wù)集成基礎(chǔ)框架,內(nèi)部提供了框架的封裝集成,讓接口開發(fā)者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。 ApiBoot是一款基于SpringBoot1.x、SpringBoot2.x的接口服務(wù)集成基礎(chǔ)框架,內(nèi)部提供了框架的封裝集成,讓接口開發(fā)者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。通過在我的SpringBoot系列教程中得到的...
摘要:相關(guān)配置配置參數(shù)參數(shù)介紹默認(rèn)值是否啟用文檔標(biāo)題快速集成文檔文檔描述通過自動(dòng)化配置快速集成文檔,僅需一個(gè)注解一個(gè)依賴即可。注意通過所獲取的類型都為。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動(dòng)化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...
摘要:重復(fù)任務(wù)循環(huán)任務(wù),當(dāng)在不傳遞重復(fù)執(zhí)行次數(shù)時(shí),不進(jìn)行重復(fù)執(zhí)行,僅僅執(zhí)行一次,如下所示參數(shù)恒宇少年每次循環(huán)的間隔時(shí)間,單位毫秒循環(huán)次數(shù)開始時(shí)間,秒后執(zhí)行任務(wù)類任務(wù)由類進(jìn)行構(gòu)建。 ApiBoot Quartz ApiBoot內(nèi)部集成了Quartz,提供了數(shù)據(jù)庫方式、內(nèi)存方式的進(jìn)行任務(wù)的存儲(chǔ),其中數(shù)據(jù)庫方式提供了分布式集群任務(wù)調(diào)度,任務(wù)自動(dòng)平滑切換執(zhí)行節(jié)點(diǎn)。 引用ApiBoot Quartz ...
摘要:注意如果你的方法返回對(duì)象只有一個(gè)資源對(duì)象需要映射,可以單獨(dú)配置使用注解。集合資源加載返回值為集合的示例類型作為返回值時(shí),其中注意必須是對(duì)象類型。如果你有想要的使用方式,你就可以提交 ApiBoot Resource Load ApiBoot Resource Load是一款資源與業(yè)務(wù)完全分離的基礎(chǔ)框架,可以整合微服務(wù)(Feign、OpenFeign)進(jìn)行負(fù)載均衡讀取固定類型、固定所屬業(yè)...
摘要:如果全部使用默認(rèn)值的情況話不需要做任何配置方式前提項(xiàng)目需要添加數(shù)據(jù)源依賴。獲取通過獲取啟用在使用格式化時(shí)非常簡單的,配置如下所示開啟轉(zhuǎn)換轉(zhuǎn)換時(shí)所需加密,默認(rèn)為恒宇少年于起宇默認(rèn)不啟用,簽名建議進(jìn)行更換。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動(dòng)化完成配置,讓接口開發(fā)者可以選著性完成開箱即...
閱讀 1440·2021-11-17 09:33
閱讀 3030·2021-10-13 09:39
閱讀 2707·2021-10-09 10:01
閱讀 2454·2021-09-29 09:35
閱讀 3902·2021-09-26 10:01
閱讀 3524·2019-08-26 18:37
閱讀 3155·2019-08-26 13:46
閱讀 1918·2019-08-26 13:39