org.apache.commons.beanutils.PropertyUtils使用明细

Apache Commons BeanUtils深度解析:原理、性能与实战避坑指南 在Java企业级开发中,对象属性拷贝是高频且基础的操作,其核心原理通常基于Java反射机制。反射允许程序在运行时动态获取和操作类信息,这为自动化属性映射提供了可能,但也带来了性能开销。理解这一原理对于选择合适的数据映射工具至关重要,它直接影响着系统的可维护性和执行效率。在微服务架构和数据处理场景中,高效的属性拷贝能显著提升开发体验和系统性能。Apache Commons BeanUtils作为经典的属性拷贝工具,通过内置的类型转换器系统,解决了不同类型属性间的自动转换问题,尤其适用于需要处理复杂类型转换或与 阅读详情

1.功能说明: 顾名思义,Bean Utility就是Bean小工具,主要是封装了反射(reflection)和自省(introspection)的API(可以查看java.lang.reflect和java.beans文档),对bean进行操作。
主要功能: 操作Bean的属性,针对Bean属性排序,Bean和Map的转换,创建动态的Bean等
 

2.使用缺点,当两个不同的类A 类B有相同的字段名称,若类A的类型为 string,类B的类型为Integer,这里会报错。这种情况若要支持需要做特殊处理。

3. org.apache.commons.beanutils.PropertyUtils 利用反射操作bean的属性

getSimpleProperty()通过反射读取属性

1Person person=newPerson();
2person.setName=("heis");
3String name=(String)PropertyUtils.getSimpleProperty(person,"name");->heis
getNestedProperty()检索嵌套的bean属性
1Book book=newBook();
2book.setAuthor(person);
3String authorName=(String)PropertyUtils.getNestedProperty(book,"author.name");//得到person的name

 getIndexedProperty()访问数组或List型内Object的属性

1Chapter chapter1=newChapter();
2Chapter chapter2=newChapter();
3book.getChapters().add(chapter1);
4book.getChapters().add(chapter2);
5Chapter chapter=(Chapter)PropertyUtils.getIndexedProperty(book,"chapter[0]");
 getMappedProperty()访问Map型bean属性的值
1Person person=newPerson();
2person.setName=("heis");
3Map favorites=newHashMap();
4favorites.put("food","rice");
5person.setFavorite(favorites);
6String favorFood=(String)PropertyUtils.getMappedProperty(person,"favorites(food)");->rice
getProperty()和setProperty()可以访问任何bean属性,通过表达式可以完成上面方法的功能
1这是一个树型的Bean属性视图
2Book book
3|--List authors
4      |--[0]->Person person
5                    |--Map favorites
6                             |--Entry(key->"food",value->"")
7PropertyUtils.setProperty(book,"authors[0].favorites(food)","rice");
8String favorFood=(String)PropertyUtils.getProperty(book,"authors[0].favorites(food)");->rice

 isReadable()和isWritable()检查bean是否可读(有getter)或可写(有setter)

1PropertyUtils.isReadable(book,"name");
2PropertyUtils.isWritable(book,"name");
getPropertyType()获取属性类型
1System.out.println(PropertyUtils.getPropertyType(person,"favorites"));->java.util.Map
copyProperty()复制Bean属性,只复制引用,final类型和原始类型(primitive type)
1Book book1=newBook();
2book1.setName("Commons Cookbook Notes");
3Book book2=newBook();
4PropertyUtils.copyProperty(book2,book1);//将book1的name属性copy到book2
describe()创建包含Bean属性的Map
1Person person=newPerson();
2person.setName("heis");
3Book book=newBook();
4book.setName("Commons Cookbook Notes");
5book.setAuthor(person);
6Map propMap=PropertyUtils.describe(book);
7propMap.get("name");->Commons Cookbook Notes
8propMap.get("author");->person

【Java基础知识 55】跟同事杠上了,Apache Beanutils为什么被禁止使用? 性能走势 --> spring cglib BeanCopier > spring copyProperties > apache PropertyUtils > apache BeanUtils 阅读详情

相关推荐

KIBANA可视化管理界面说明

更说明转自https://blog.csdn.net/IT_ZRS/article/details/125496588 1 主要结构功能 使用浏览器访问 ip:5601 默认端口,进入首页 Discover:日志管理视图 主要进行搜索和查询 Visualize:统计视图 构建可视化的图表 Dashboard:仪表视图 将构建的图表组合形成图表盘 Timelion:时间轴视图 随着时间流逝的数据 APM:性能管理视图 应用程序的性能管理系统 Canvas:大屏展示

tian830937的专栏 7081

org.apache.commons.beanutils.PropertyUtils使用

[size=large][color=blue]org.apache.commons.beanutils.PropertyUtils 利用反射操作bean的属性。[/color][/size] [size=large][color=red]getSimpleProperty()通过反射读取属性[/color][/size] [code="java"] Person person=new ...

2017

python爬虫自动下载网页链接

需求分析 今天遇到一个简单的需求,需要下载澳大利亚电力市场NEM日前市场的发电商报价数据(http://nemweb.com.au/Reports/Current/Next_Day_Offer_Energy/),页面观感是这样的: Ctrl + F 一下,看到一共有395个zip链接。于是就想着用python爬虫自动下载。这个网页很简单,没有验证码,甚至不需要登录,因此自动下载的pytho...

da_kao_la的博客 1万+

Apache Commons BeanUtils包学习(2)-beanutils.PropertyUtils, beanutils.DynaBean

原文:http://space.itpub.net/7191730/viewspace-446960#xspace-tracks1.简介 在一般的写bean组件的时候,都必须要写setter和getter方法,当然如果我们事先已经知道bean的相关属性和方法,写bean是比较简单的,但是组件太多的时候,重复编写常常是枯燥乏味令人厌烦的。但当有些时候我们需要调用动态对象 的属性的时候,我们应该怎么来设定和获取对象的属性呢?BeanUtils就可以帮助我们来解决这个问题。它需要Collections包和lo

Anvil的专栏 6563

在Ubuntu22.04.2远程服务器上搭建OHIF+Orthanc

在Ubuntu远程服务器上不翻墙,但是本地windows需要科学上网开始之前,首先在终端输入export -p查看是否有代理端口如下如果有就关了,输入如下命令。

weixin_51116549的博客 1332

Gromacs空蛋白模拟实战:从PDB文件到动力学轨迹的完整流程解析

本文详细解析了使用Gromacs进行空蛋白分子动力学模拟的完整实战流程。从PDB文件处理、力场选择与拓扑构建,到模拟盒子创建、溶剂化与电荷中和,再到能量最小化、NVT/NPT平衡及最终的生产模拟与基础分析,提供了每一步的命令详解和关键注意事项,旨在帮助计算生物学研究者系统掌握这一核心研究工具。

weixin_28454475的博客 275

常用的工具类之 Apache Commons BeanUtils 简单使用与部分原理解析

整理了开发中常用的 JavaBean 处理工具类,包括 Beanutils、PropertyUtils、CollectionUtils、ConvertUtils。近期使用中发现 BeanUtils.populate 方法存在 bug,实体类属性与 Map 中 key 值一模一样,但是会有一些属性拷贝完未null,而且 debug 源码未果,在这里推荐大家一个集成程度更高的 Util 工具类 hutool BeanUtils:主要提供了对于 JavaBean 进行各种操作,比如对象,属性复制等等,自动转换数

m0_37225642的博客 1万+

《Linux GPU 驱动核心机制:面向图形与 AI 计算的 DRM 内存管理与任务调度》 目录

本文以缓冲区对象(BO)生命周期为主线,系统解析 Linux DRM 子系统中 GPU 驱动的核心机制。涵盖 GEM 与 TTM 内存管理、dma-buf/dma-fence 共享同步、GPU 调度与地址空间管理,结合 amdgpu、Xe 等驱动代码,深入剖析其设计动机与实现逻辑。旨在填补中文领域对 GPU 内核机制系统性讲解的空白,为图形与 AI 计算场景下的内存泄漏、同步死锁等疑难问题提供可追溯的分析路径。

图形/计算GPU的驱动与虚拟化技术分享园地 3709

java beanutil 工具类_Apache Commons BeanUtils PropertyUtils工具类操作Java Bean属性

PropertyUtils和BeanUtils这两个类功能基本相同,主要的区别有:1、PropertyUtils提供的方法多于BeanUtils提供的方法。2、BeanUtils在对Bean赋值时会进行类型转化,PropertyUtils不会进行类型进行转化,如果类型不同则会抛出异常。setProperty()和setSimpleProperty()的区别:setProperty(), Set t...

weixin_32513585的博客 1004

线程池详解(通俗易懂超级好)

目标 【理解】线程池基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】使用java内置线程池完成综合案例 线程池 线程池基础 线程池使用 线程池综合案例 4.学员练习 5.线程池总结 概念介绍 1:什么是线程池 2:为什么使用线程池 3:线程池有哪些优势 什么是池 什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

拉格朗日的学习笔记 12万+

SAP S4 HANA:按单生产(MTO)场景中的COGS分割

本文介绍了SAP S/4HANA中提供的各种选项,以在销售订单/商品是按订单生产(以下称为MTO)生产流程中的成本对象时,在基于帐户的COPA环境中报告COGS分割信息。

adam915的博客 1191

PropertyUtils.copyProperties和BeanUtils.copyProperties使用区别

位于org.apache.commons.beanutils包里面的这两个参数拷贝方法可以复制一个对象中相同名字的参数值到另一个对象,能简化很多代码,但是这两个copy方法使用起来有很大区别。 /** * 参数拷贝 * * @param dest 目标 * @param orig 数据源 * @author * */ public static void copyP

FreemanZhao的博客 1万+

华为OD机试真题 新系统【优化充电桩调度算法】

华为OD机试 新系统真题【优化充电桩调度算法】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【优化充电桩调度算法】

qq_45776114的博客 751

org.apache.commons.beanutils包 BeanUtils、 MethodUtils、 PropertyUtils

org.apache.commons.beanutils包下的常用类: BeanUtils BeanUtils提供对 Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。 MethodUtil

loonie51的专栏 1446

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

BeanUtils的使用

1. 概述 第一次接触BeanUtils是在学习Struts的过程中,在Struts中它被大量用于处理FormBean。BeanUtils主要提供了对于JavaBean进行各种操作, BeanUtils一共分4个包:? org.apache.commons.beanutils? org.a

xiaowenand的专栏 1286

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Jakarta Commons BeanUtils

Jakarta Commons BeanUtils1.简介在一般的写bean组件的时候,都必须要写setter和getter方法,当然如果我们事先已经知道bean的相关属性和方法,写bean是比较简单的,但是组件太多的时候,重复编写常常是枯燥乏味令人厌烦的。但当有些时候我么需要调用动态对象的属性的时候,我们应该怎么来设定和获取对象的属性呢?BeanUtils就可以帮助我们来解决这个问题。它需要Co

xinqing6888的专栏 995

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

org.apache.commons.beanutils.BeanUtils 简介

BeanUtils简读本一、简介:BeanUtils提供对 Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。二、用法:BeanUtils是这个包里比较常用的一个工具类,这里只介绍它的copyProperti

shang_soft的专栏 531

BeanUtils--org.apache.commons.beanutils.BeanUtils

转自:http://www.blogjava.net/huanzhugege/archive/2007/02/05/97964.htmlBeanUtilsBeanUtils是Apache-Commons项目提供的另一个非常方便的类库,通过这个类库能够更方便的使用反射。最常用的类是BeanUtils(org.apache.commons.beanutils包中),使用这个类能通过名字访问一个Be

小樓東風的专栏 1567

org.apache.commons.beanutils.PropertyUtils和org.apache.commons.beanutils.BeanUtils

PropertyUtils.describe(query)  会将query里面字段是什么类型的转换成什么类型的 BeanUtils.describe(query)    会将query里面的字段类型变为String类型的  如果有字段类型为Integer那么会报java.lang.String cannot be cast to java.lang.Integer

it_noob的专栏 1114

java中bean和map互转利用springCglib/apache.beanutils/apache.PropertyUtils工具类,使用反射手写BeanToMap

利用springcore的org.springframework.cglib.beans.BeanMap 这个方法转出来的Map再一次进行put是put不了内容的,需要新new Map().putAll(这个Map) 这里的实体类必需实现get/set方法,不然读不到属性 beanToMap public static <T> Map<String, ?> beanToMap(T bean) { BeanMap beanMap = BeanMap.create(bean)

奔跑的菜鸡 1513

org.apache.commons.beanutils.BeanUtils简介[转]

BeanUtils简读本 一、简介: BeanUtils提供对 Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。 二、用法: BeanUtils是这个包里比较常用的一个工具类,这...

hugui123456ccc的专栏 135

PropertyUtils.getPropertyDescriptors利用反射机制获取类中的属性

第一步:建立java项目 第二步:建立两个类 我建立的是一个bean.java类,和beanTest.java类,同目录下 第三步:写代码 bean.java public class bean { String name; String password; } beanTest.java import java.beans.PropertyDescriptor; import java.lang...

dxyzhbb的博客 6443

org.apache.commons.beanutils.BeanUtils|PropertyUtils(深层拷贝)

Stu i = new Stu(); i.setId(1); i.setName("zhangsan"); Stu j = (Stu) BeanUtils.cloneBean(i); i.setName("lisi"); System.out.println(i.getName() + " " + j.getName()); Stu ...

successflow 267

java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils这是什么错误?

今天做一个shiro实例的时候,用mvn jetty:run运行maven web项目报错: java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils 这是因为缺少一个包commons.beanutils,所以在pom.xml里加上下面这段,再运行mvn jetty:run就行了 ...

weixin_30528371的博客 2255

com.sun.org.apache.commons.beanutils.BeanUtils的用法简介

一、简介: BeanUtils提供对 Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的

captain 9673
上一篇: JSON 数据(集合数据)到服务端的处理
下一篇: Div scroll 属性详解
超斌
博客等级 码龄20年 5粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值