资讯专栏INFORMATION COLUMN

ApiBoot - ApiBoot Http Converter 使用文档

dance / 1487人阅读

摘要:如下所示不配置默认使用自定义是的概念,用于自定义转换实现,比如自定义格式化日期自动截取小数点等。下面提供一个的简单示例,具体的使用请参考官方文档。

ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大的提高开发效率。

FastJson是阿里巴巴提供的一款Json格式化插件。

ApiBoot提供了FastJson驱动转换接口请求的Json字符串数据,添加该依赖后会自动格式化时间(格式:YYYY-MM-DD HH:mm:ss)、空对象转换为空字符串返回、空Number转换为0等,还会自动装载ValueFilter接口的实现类来完成自定义的数据格式转换。

引入Http Converter

ApiBoot Http Converter使用非常简单,只需要在pom.xml添加如下依赖:



    org.minbox.framework
    api-boot-starter-http-converter

ApiBoot所提供的依赖都不需要添加版本号,具体查看ApiBoot版本依赖

相关配置

ApiBoot Http Converter通过使用SpringBoot内置的配置参数名来确定是否开启,在SpringBoot内可以通过spring.http.converters.preferred-json-mapper来修改首选的Json格式化插件,SpringBoot已经提供了三种,分别是:gsonjacksonjsonb,当我们配置该参数为fastJson不进行配置就会使用ApiBoot Http Converter提供的fastJson来格式化转换Json返回数据。

如下所示:

spring:
  http:
    converters:
      # 不配置默认使用fastJson
      preferred-json-mapper: fastJson
自定义ValueFilter

ValueFilterFastJson的概念,用于自定义转换实现,比如:自定义格式化日期、自动截取小数点等。

下面提供一个ValueFilter的简单示例,具体的使用请参考FastJson官方文档。

ValueFilter示例

在使用ValueFilter时一般都会搭配一个对应的自定义@Annotation来进行组合使用,保留自定义小数点位数的示例如下所示:

创建 BigDecimalFormatter Annotation

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface BigDecimalFormatter {
    /**
     * 小数位数,默认保留两位
     * @return
     */
    int scale() default 2;
}

创建 BigDecimal ValueFilter

public class BigDecimalValueFilter
        implements ValueFilter {
    /**
     * logback
     */
    Logger logger = LoggerFactory.getLogger(BigDecimalValueFilter.class);

    /**
     * @param object 对象
     * @param name   对象的字段的名称
     * @param value  对象的字段的值
     */
    @Override
    public Object process(Object object, String name, Object value) {
        if (ValidateTools.isEmpty(value) || !(value instanceof BigDecimal)) {
            return value;
        }
        return convertValue(object, name, value);
    }

    /**
     * 转换值
     *
     * @param object 字段所属对象实例
     * @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);
                // 执行格式化
                BigDecimal decimal = (BigDecimal) value;
                System.out.println(bigDecimalFormatter.scale());
                // 保留小数位数,删除多余
                value = decimal.setScale(bigDecimalFormatter.scale(), BigDecimal.ROUND_DOWN).doubleValue();
            }
        } catch (Exception e) {
            logger.error("格式化BigDecimal字段出现异常:{}", 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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74055.html

相关文章

  • ApiBoot 2.0.4.RELEASE版本发布

    摘要:是一款基于的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。 ApiBoot是一款基于SpringBoot1.x、SpringBoot2.x的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。通过在我的SpringBoot系列教程中得到的...

    JellyBool 评论0 收藏0
  • ApiBoot - ApiBoot Swagger 使用文档

    摘要:相关配置配置参数参数介绍默认值是否启用文档标题快速集成文档文档描述通过自动化配置快速集成文档,仅需一个注解一个依赖即可。注意通过所获取的类型都为。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大...

    yuanxin 评论0 收藏0
  • ApiBoot - ApiBoot Quartz 使用文档

    摘要:重复任务循环任务,当在不传递重复执行次数时,不进行重复执行,仅仅执行一次,如下所示参数恒宇少年每次循环的间隔时间,单位毫秒循环次数开始时间,秒后执行任务类任务由类进行构建。 ApiBoot Quartz ApiBoot内部集成了Quartz,提供了数据库方式、内存方式的进行任务的存储,其中数据库方式提供了分布式集群任务调度,任务自动平滑切换执行节点。 引用ApiBoot Quartz ...

    CocoaChina 评论0 收藏0
  • ApiBoot - ApiBoot Resource Load 使用文档

    摘要:注意如果你的方法返回对象只有一个资源对象需要映射,可以单独配置使用注解。集合资源加载返回值为集合的示例类型作为返回值时,其中注意必须是对象类型。如果你有想要的使用方式,你就可以提交 ApiBoot Resource Load ApiBoot Resource Load是一款资源与业务完全分离的基础框架,可以整合微服务(Feign、OpenFeign)进行负载均衡读取固定类型、固定所属业...

    diabloneo 评论0 收藏0
  • ApiBoot - ApiBoot Security Oauth 依赖使用文档

    摘要:如果全部使用默认值的情况话不需要做任何配置方式前提项目需要添加数据源依赖。获取通过获取启用在使用格式化时非常简单的,配置如下所示开启转换转换时所需加密,默认为恒宇少年于起宇默认不启用,签名建议进行更换。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即...

    Tonny 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<