Java利用反射动态设置对象字段值

news/2024/5/19 4:21:13 标签: java, 反射, 字段级别权限

项目场景:

桥梁信息维护需要做到字段级别的权限控制(包括增删改查),设计包含字段权限配置、字段权限级别管理维护接口两大部分。

1)字段权限配置可参考常见的用户角色管理设计;

2)对于增删改操作,出入参可参考常用的字段传参;对于查找操作,返回每一个字段定义可参考如下:

java">@Data
public class BridgeFieldDTO {
    /**
     * 是否显示
     */
    private Boolean show = false;
    /**
     * 字段取值
     */
    private Object value;
    /**
     * 字段翻译
     */
    private String valueTranslation;
}

字段级别的权限控制可参考如下思路实现:

1)按照正常逻辑接受或者查询结果

2)建立新对象,根据字段级别权限控制将接受或查询结果放到新对象中;

增删改情况,没有字段权限的字段设置成null值;

查询情况,每个字段按照上述字段定义进行返回;

如何做到字段级别的权限控制,以下是java利用反射机制实现的参考代码:

其中核心方法包括:

获取字段属性:

java">Class<?> originClazz = NavigableBridgePO.class;
Field[] fields = originClazz.getDeclaredFields();
Map<String,Class> fieldMap = new HashMap<>();
for(Field field: fields){
    fieldMap.put(field.getName(),field.getType());
}

读数据:

java">Class<?> originClazz = NavigableBridgePO.class;
Method getMethod = originClazz.getMethod(getMethodName);
Object getValue = getMethod.invoke(navigableBridgePO);

写数据:

java">Class<?> changedClazz = NavigableBridgePO.class;
Method setMethod = changedClazz.getMethod(setMethodName,fieldMap.get(sysRoleFieldPO.getField()));
setMethod.invoke(changedNavigableBridge, getValue);


http://www.niftyadmin.cn/n/5301066.html

相关文章

C#:ImportingConstructor特性

ImportingConstructor特性(Attribute)&#xff0c;用于标记构造函数&#xff0c;表示该构造函数会被容器用于进行依赖注入。 在使用依赖注入的框架中&#xff0c;我们可以通过标记构造函数上的ImportingConstructor特性&#xff0c;告诉框架该构造函数需要进行依赖注入。当容器…

xdoj字符串元素统计

题目&#xff1a;字符串元素统计 时间限制&#xff1a;1S 内存限制&#xff1a;10000Kb 问题描述&#xff1a; 编写一个函数&#xff0c;由实参传来一个字符串&#xff0c;统计字符串中字母&#xff0c;数字的个数&#xff0c;在主函数中输入字符及输出上述结果。 输入说明…

Halcon底帽运算bottom_hat

Halcon底帽运算 底帽运算的原理是用原始的二值图像减去闭运算的图像。闭运算的目的是对某些局部区域进行“填补”&#xff0c;如填空洞、使分离的边缘相连接等。而底帽运算正是用来提取这些用于填补的区域的。图&#xff08;a&#xff09;为从二值图像中提取出的亮的区域&…

Linux:磁盘分区

文章目录 1. 前言2. Linux 存储设备分区2.1 MTD(Memory Technology Device) 类设备分区2.1.1 通过 DTS 设定 MTD 类设备分区2.1.2 通过 内核命令行 设定 MTD 类设备分区2.1.3 小结 2.2 块(block) 类设备分区2.2.1 块(block) 类设备分区解析2.2.2 块设备 sysfs 1. 前言 限于作者…

解析企业建筑资质API:提升建筑行业信息透明度的关键工具

前言 随着信息技术的快速发展&#xff0c;数据已经成为推动各行各业创新发展的关键要素。在建筑行业&#xff0c;企业建筑资质API作为一项新兴的技术应用&#xff0c;正逐渐成为提升行业信息透明度的关键工具。本文将对企业建筑资质API进行解析&#xff0c;探讨其如何助力提升…

sklearn.feature_selection.SelectFromModel利用模型筛选特征

sklearn.feature_selection.SelectFromModel模型筛选特征 以随机森林为例&#xff0c;查看随机森林之类的模型使用的特征。有两种使用方式&#xff1a; 1&#xff0c; 使用未训练的模型 from sklearn.feature_selection import SelectFromModel from sklearn.ensemble impor…

css实现纵向分列,中间间距相等

方法一&#xff1a;使用网格布局&#xff08;Grid Layout&#xff09; <!DOCTYPE html> <html> <head><style>.container {height: 100px;display: grid;grid-template-columns: 2fr 1fr 3fr; /* 自定义每一列的比例 *//* 将三个行都设置为平均分配剩…

python实现简易的flask后端接口

先安装插件pip install flask 新建py脚本文件编码&#xff1a; # -*- coding: utf-8 -*- from flask import Flask from flask_cors import CORS # 跨域依赖&#xff0c;通过pip install flask-cors安装app Flask(__name__) cors CORS(app) # 跨域设置&#xff0c;这样设置…