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

Spring工具类--ReflectUtils的使用

原文网址:Spring工具类系列--ReflectUtils的使用_IT利刃出鞘的博客-CSDN博客

简介

本文介绍Spring的ReflectUtils的使用。

ReflectUtils工具类的作用:便利地进行反射操作。

Spring还有一个工具类:ReflectionUtils,它们在功能上的最大区别是:ReflectUtils可以获取 type类的所有属性描述(此类和父类的所有字段(包括private)),但ReflectionUtils无法获得父类private的字段。

示例

需求:通过反射的方式,将父类的pageSize属性改为30。

测试类

package com.knife.controller;import com.knife.entity.User;
import org.springframework.cglib.core.ReflectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;@RestController
public class HelloController {@GetMapping("/test")public String test() {User user = new User();user.setId(3L);user.setUserName("Tony");user.setCurrent(4);user.setPageSize(20);Class<? extends User> aClass = user.getClass();System.out.println("-------- 所有的属性名 --------");PropertyDescriptor[] beanProperties = ReflectUtils.getBeanProperties(aClass);for (PropertyDescriptor beanProperty : beanProperties) {String name = beanProperty.getName();System.out.println(name);if ("pageSize".equals(name)) {Method writeMethod = beanProperty.getWriteMethod();try {writeMethod.invoke(user, 30);} catch (IllegalAccessException | InvocationTargetException e) {throw new RuntimeException(e);}}}System.out.println("-------- 新的字段值(pageSize)");System.out.println(user.getPageSize());return "test success";}
}

Entity

package com.knife.entity;import lombok.Data;
import lombok.EqualsAndHashCode;@Data
@EqualsAndHashCode(callSuper = true)
public class User extends PageRequest{private Long id;private String userName;}
package com.knife.entity;import lombok.Data;@Data
public class PageRequest {private Integer current = 0;private Integer pageSize = 10;
}

结果

-------- 所有的属性名 --------
current
id
pageSize
userName
-------- 新的字段值(pageSize)
30

获取PropertyDescriptor

上边是文章的部分内容,为便于维护,全文已转移到此网址:Spring工具类-ReflectUtils的使用 - 自学精灵

http://www.lryc.cn/news/177856.html

相关文章:

  • 联盟 | 彩漩 X HelpLook,AI技术赋能企业效率提升
  • MATLAB m文件格式化
  • ​分拆菜鸟将使阿里巴巴股票迎来新一轮上涨?
  • Excel 技巧记录-那些复杂的公式和函数
  • vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
  • Qt raise()问题
  • 26591-2011 粮油机械 糙米精选机
  • JavaScript位运算的妙用
  • This dependency was not found: vxe-table/lib/vxe-table in ./src/main.js
  • 网工内推 | H3C售前工程师,上市公司,13薪,有带薪年假、年终奖
  • 深入理解常见应用级算法思想
  • Windows下使用pybind11教程(python调用C++代码)
  • 基于通用LLM的一次测试用例自动生成的实验
  • 【excel密码】为什么工作表不能移动、复制了?
  • 软考高级之系统架构师之计算机基础
  • Mysql生产随笔
  • 现代卷积网络实战系列2:PyTorch构建训练函数、LeNet网络
  • leetCode 62.不同路径 动态规划 + 空间复杂度优化
  • 在 .NET 8 Release Candidate 1 中推出 .NET MAUI:质量
  • Spring 学习(八)事务管理
  • CodeTON Round 6 (Div 1 + Div 2, Rated, Prizes!)(A - E)
  • Spring 源码分析(五)——Spring三级缓存的作用分别是什么?
  • Django基于类视图实现增删改查
  • matplotlib绘图实现中文宋体的两种方法(亲测)
  • 非常有用的JavaScript高阶面试技巧!
  • windows 安装Linux子系统 Ubuntu 并配置python3
  • pytorch的pixel_shuffle转tflite文件
  • sentinel-dashboard-1.8.0.jar开机自启动脚本
  • c++堆排序-建堆-插入-删除-排序
  • 使用代理后pip install 出现ssl错误