spring动态修改注解的值

972 阅读1分钟
@Data
public class AdKeywordHourExportVo {

    @ExcelProperty(value = "小时")
    private String label;
}

需求是不同情况导出时,@ExcelProperty中value值不同,直接上代码

//获取field
Field filed = AdKeywordHourExportVo.class.getDeclaredField("label");
filed.setAccessible(true);
//获取注解
ExcelProperty annotation = filed.getAnnotation(ExcelProperty.class);

InvocationHandler invocationHandler = Proxy.getInvocationHandler(annotation);
Field memberValues = invocationHandler.getClass().getDeclaredField("memberValues");
memberValues.setAccessible(true);
Map<String, Object> map = (Map<String, Object>) memberValues.get(invocationHandler);
String[] valueArr = {"日期"};
map.put("value", valueArr);