Lombok @Data生成get set方法问题
问题
今天使用EasyExcel进行导出时,发现有个属性明明赋值了但是导出文件中没有显示出来,类大致如下
@Data
public class WithdrawExportDTO {
private String sCloudTrade;
private String sCloudTradePlatformVoucher;
private String sCloudTradeOkCard;
private String sCloudTradePoints;
private String sCloudCashVoucher;
}
排查
起初以为是没有赋值成功,断点调试发现在EasyExcel写入前是有值的,如下图所示
断点进入write方法
发现在com.alibaba.excel.write.executor.ExcelWriteAddExecutor#addJavaObjectToExcel方法中这个属性对应的列在写入时被continue掉了,如下图所示
很明显这个条件不满足才会被continue掉,原因是beanMap中首字母变成了大写
原因
新建测试类,当自己生成get方法时首字母为小写
使用cglib生成beanMap正常
当使用Lombok时
很显然lombok在生成nXxx这种属性时会生成为getNXxx导致cglib获取为大写类型
解决方案
自己生成get set方法