[alibaba/easyexcel]能否将ClassUtils缓存变成可设置

2024-05-11 434 views
3

由于2.1.1版本之后加入ClassUtils缓存,这样开发过程中,想要修改class属性,例如ExcelProperty注解index值,第一次修改生效,但是ClassUtils会缓存这个class,下次再调用同样的class导致,后续设置失效。 源码: synchronized (clazz) { fieldCacheSoftReference = FIELD_CACHE.get(clazz); if (fieldCacheSoftReference != null && fieldCacheSoftReference.get() != null) { return fieldCacheSoftReference.get(); } declaredFields(clazz, convertAllFiled); } return FIELD_CACHE.get(clazz).get(); 会去拿缓存class

回答

2

@zhuangjiaju

5

后续版本会将ClassUtils.FIELD_CACHE 改成public,运行之前clean 就行

1

已经在3.0.0-beta1 版本修复,beta版本会在一个月内升级成正式版。

7

这样清理,遇上并发导出,理论上还是会冲突。 A进程刚清理A.class B进程在A进程getFieldCache之前添加A.class进去,这样A进程是拿的B进程的样式 @zhuangjiaju