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

 更新时间:2024年01月04日 09:24:54   作者:chao09_01  
桥梁信息维护需要做到字段级别的权限控制,本文主要介绍了Java利用反射动态设置对象字段值的实现,具有一定的参考价值,感兴趣的可以了解一下

项目场景:

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

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

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

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

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

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

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

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

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

如何做到字段级别的权限控制,以下是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());
}

读数据:

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

写数据:

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

到此这篇关于Java利用反射动态设置对象字段值的实现的文章就介绍到这了,更多相关Java动态设置对象字段值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java JDK8新增Optional工具类讲解

    Java JDK8新增Optional工具类讲解

    这篇文章主要介绍了Java JDK8新增Optional工具类讲解,本文通过老版和jdk8对比对null的处理方式,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Java 房屋租赁系统的实现流程

    Java 房屋租赁系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个房屋租赁系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • JSP页面pageEncoding和contentType属性

    JSP页面pageEncoding和contentType属性

    有关于JSP页面中pageEncoding和contentType属性。
    2013-04-04
  • Java毕业设计实战之食品溯源系统的实现

    Java毕业设计实战之食品溯源系统的实现

    这是一个使用了java+Springboot+Maven+mybatis+Vue+mysql+wd开发的食品溯源系统,是一个毕业设计的实战练习,具有食品溯源该有的所有功能,感兴趣的朋友快来看看吧
    2022-01-01
  • Java实现猜数字小游戏代码

    Java实现猜数字小游戏代码

    大家好,本篇文章主要讲的是Java实现猜数字小游戏代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Java AtomicInteger类的重要方法和特性

    Java AtomicInteger类的重要方法和特性

    AtomicInteger是Java中的一个类,用于实现原子操作的整数,AtomicInteger类主要用于处理整数类型的原子操作,本文给大家介绍Java AtomicInteger类的重要方法和特性,感兴趣的朋友一起看看吧
    2023-10-10
  • Java计算两个时间段的差的实例详解

    Java计算两个时间段的差的实例详解

    在本篇内容中,我们给大家整理了关于Java计算两个时间段的差的实例内容,并做了详细分析,有需要的朋友们学习下。
    2022-11-11
  • 关于Spring多数据源TransactionManager冲突的解决方案

    关于Spring多数据源TransactionManager冲突的解决方案

    这篇文章主要介绍了关于Spring多数据源TransactionManager冲突的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • java优化hibernate性能的几点建议

    java优化hibernate性能的几点建议

    以上是在进行struts+hibernate+spring进行项目开发中,对hibernate性能优化的几点心得。
    2008-10-10
  • 浅谈Java由于不当的执行顺序导致的死锁

    浅谈Java由于不当的执行顺序导致的死锁

    为了保证线程的安全,我们引入了加锁机制,但是如果不加限制的使用加锁,就有可能会导致顺序死锁(Lock-Ordering Deadlock)。本文将会讨论一下顺序死锁的问题。
    2021-06-06

最新评论