当前位置: 首页 > ai >正文

【java反射修改注解属性】java 通过反射,动态修改注解的某个属性值

有些情况为了偷懒,往往会使用注解来动态处理一些功能,比如Excel的导入以及导出等。但是一些情况下我们需要动态的修改注解的属性值,来完成一些特定场景的业务需求。

java动态修改注解的属性代码

public void updateFieldAnnotationVal(String fieldName, String annoName, Class className, Object value ,Class annotation) throws Exception{Field field =  className.getDeclaredField(fieldName);//获取属性上面的注解Annotation annotation1 = field.getAnnotation(annotation);//获取动态代理对象InvocationHandler invocationHandler = Proxy.getInvocationHandler(annotation1);//获取 AnnotationInvocationHandler 的 memberValues 字段Field memberValues = invocationHandler.getClass().getDeclaredField("memberValues");//由于属性私有,必须打开权限memberValues.setAccessible(true);//修改属性值Map map = (Map) memberValues.get(invocationHandler);map.put(annoName, value);}

调用代码

@GetMapping("/studentMajor/getStudentMajorExcelTemplate")public void getStudentMajorExcelTemplate(StudentMajorVo param, PageRequestVo pageRequestVo) throws Exception {HashMap<String, String[]> boxMap = new HashMap<>();Integer userType = param.getUserType();if (UserType.SCHOOL == userType) {this.updateFieldAnnotationVal("majorId", "importField", StudentMajorExcel.class, false, Excel.class);this.updateFieldAnnotationVal("schoolName", "importField", StudentMajorExcel.class, false, Excel.class);}if (UserType.DEPARTMENT == userType) {this.updateFieldAnnotationVal("majorId", "importField", StudentMajorExcel.class, true, Excel.class);this.updateFieldAnnotationVal("schoolName", "importField", StudentMajorExcel.class, true, Excel.class);}ExcelsUtil.exportCommonTemplate(StudentMajorExcel.class, boxMap);}
http://www.xdnf.cn/news/4997.html

相关文章:

  • 抖音到店摸着京东外卖过河
  • Go语言的宕机恢复,如何防止程序奔溃
  • UnityDots学习(五)
  • xxl-job简单入门使用教程
  • 【WebGIS系列】WebGIS 开发相关的资源
  • 地图、图表的制作要领
  • Spring Boot初级教程:从零搭建企业级Java应用
  • Milvus(18):IVF_PQ、HNSW
  • 如何利用爬虫获得1688商品详情:实战指南
  • HiklQQBot开源程序基于python的轻量qq官方机器人框架 快速部署启动官方QQ机器人 插件编写简单易懂 支持小白AI一键生成插件
  • 滑动窗口-窗口中的最大/小值-单调队列
  • 强化学习三大基本方法-DP、MC、TD
  • 英文单词词根记忆法:后缀 ology, onomy, graphy词根有哪些单词
  • websocketd 10秒教程
  • 力扣热题——到达最后一个房间的最少时间 II
  • QML 图像变换(缩放、平移、旋转)
  • 【RLHF】 Reward Model 和 Critic Model 在 RLHF 中的作用
  • AD新版本Skill的使用
  • SecureCRT网络穿透/代理
  • Python毕业设计219—基于python+Django+vue的房屋租赁系统(源代码+数据库+万字论文)
  • 主题分析建模用法介绍
  • RocketMQ 深度解析:架构设计与最佳实践
  • JavaScript 模块系统全景解析
  • 【数据机构】2. 线性表之“顺序表”
  • Qt读写XML文档
  • uniapp-商城-46-创建schema并新增到数据库
  • 浅聊大模型-有条件的文本生成
  • RAIL-KD: 随机中间层映射知识蒸馏
  • uniapp 不同路由之间的区别
  • LVGL9保姆级教程(源码获取)