基于grpc从零开始搭建一个准生产分布式应用(6) - 06 - MapStruct常见问题汇总

本文主要是介绍基于grpc从零开始搭建一个准生产分布式应用(6) - 06 - MapStruct常见问题汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、Unknown property "discount" in result type TestMixBO. Did you mean "null"?可能有以种原因:

  1. 属性名写错了;
  2. maven中的编译插件中lombok的配置配置在了mapstrut之后,导致lombok注解没有执行;

2、Unknown property "discount" in result type TestMixBO. Did you mean "discountG"?

BO类中属性名和setter/getter方法名称不匹配,这个一般是由人工修改引起的;

3、No property name "discount" exsits in source parameter(s).Did you mean "discountG"?

BO类中属性名和setter/getter方法名称不匹配,这个一般是由人工修改引起的;

4、支持几种lombok注解

@Builder、@AllArgsConstructor

5、用异常代替非空验证?

非空验证时可以不指定@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)属性,直接使用@Mapper

6、proto映射时集合为啥总为空?

原因是proto会把repeat修饰的变量后面默认给加上List后缀。所以映射时需特殊指定一下,如下:

List<WorkflowDto> toDtos(List<WorkflowBo> var1);@Mapping(source = "children", target = "childrenList")
WorkflowDto toDto(WorkflowBo var1);
7、Timestamp转date时时间会多8小时
@JsonFormat(pattern="yyyy-MM-dd",  timezone="GMT+8")@Datapublic static class  StudyDateRange implements Serializable {@JsonFormat(pattern="yyyy-MM-dd",  timezone="GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date start;@JsonFormat(pattern="yyyy-MM-dd",  timezone="GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date end;}
//这主要是时区问题引起的
@Mapping(target = "createdAt" , expression = "java(MapStructMapperUtil.dateToLocalDate(var1.getCtime()))" )
8、@AfterMapping
@AfterMapping
default void  setLicenseActivationInfoBo(@MappingTarget LicenseActivationRecordBo bo,  ActivationRecordEntity var1) {List<LicenseActivationInfoBo> activationInfo = JSONUtil.toList(var1.getActivationInfo(), LicenseActivationInfoBo.class);int accountTotal = 0;for(LicenseActivationInfoBo item: activationInfo) {accountTotal += item.getAccountLimit();}bo.setAccountLimit(accountTotal);bo.setActivationInfo(activationInfo);
}
9、proto通过优化定义节省传输大小
message MyMessage {//定义一个枚举enum DataType {StudentType = 0;WorkerType = 1;}//用data_type标识传的是那一个枚举DataType data_type = 1;//标示每次枚举类型最多只能出现其中的一个 节省空间oneof dataBody {Student student = 2;Worker worker = 3;}}

这篇关于基于grpc从零开始搭建一个准生产分布式应用(6) - 06 - MapStruct常见问题汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/2042

相关文章

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Swagger在java中的运用及常见问题解决

《Swagger在java中的运用及常见问题解决》Swagger插件是一款深受Java开发者喜爱的工具,它在前后端分离的开发模式下发挥着重要作用,:本文主要介绍Swagger在java中的运用及常... 目录前言1. Swagger 的主要功能1.1 交互式 API 文档1.2 客户端 SDK 生成1.3

java连接opcua的常见问题及解决方法

《java连接opcua的常见问题及解决方法》本文将使用EclipseMilo作为示例库,演示如何在Java中使用匿名、用户名密码以及证书加密三种方式连接到OPCUA服务器,若需要使用其他SDK,原理... 目录一、前言二、准备工作三、匿名方式连接3.1 匿名方式简介3.2 示例代码四、用户名密码方式连接4