Java copyProperties

自己写了个copyProperties方法,虽没apache与spring的强大,但功能自己够用就好,而且不用引入第三方库。

 

package bean;

import java.lang.reflect.Method;

/**
 * @version 1.0
 * @author fireinjava
 * @data Dec 11, 2009
 * @描述: 存放字段及其要用到的对应get(来自sourceBean)与set(来自targetBean)方法
 */
public class PropertyMethod {

	private String propertyName;
	private Method methodRead;
	private Method methodWrite;
	
	public String getPropertyName() {
		return propertyName;
	}
	public void setPropertyName(String propertyName) {
		this.propertyName = propertyName;
	}
	public Method getMethodRead() {
		return methodRead;
	}
	public void setMethodRead(Method methodRead) {
		this.methodRead = methodRead;
	}
	public Method getMethodWrite() {
		return methodWrite;
	}
	public void setMethodWrite(Method methodWrite) {
		this.methodWrite = methodWrite;
	}
	
}

 

package bean;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * @version 1.0
 * @author fireinjava
 * @data Dec 11, 2009
 * @描述:拷贝Bean(适用于标准JavaBean,且拷贝的属性类型必须一致)
 */
public class BeanUtils {
	
	public static void copyProperties(Object source, Object target) throws IllegalArgumentException,
			IllegalAccessException, InvocationTargetException {
		copyProperties(source, target, null);
	}

	/**
	 * 当某个属性不必复制或两个Bean属性名称一样且类型不一样时用(得另外设值)
	 */
	public static void copyProperties(Object source, Object target, String[] ignoreProperties)
			throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		if (source == null)
			throw new IllegalArgumentException("Source must not be null");
		else if (target == null)
			throw new IllegalArgumentException("Target must not be null");

		List<String> ignoreList = null;
		if (ignoreProperties != null)
			ignoreList = Arrays.asList(ignoreProperties);

		List<PropertyMethod> listPm = new ArrayList<PropertyMethod>();
		Map<String, Method> mapMethodWrite = new HashMap<String, Method>();
		Map<String, Method> mapMethodRead = new HashMap<String, Method>();

		Method[] methodTarget = target.getClass().getMethods();
		for (Method mt : methodTarget)
			if (mt.getName().startsWith("set")) {
				String propertyName = mt.getName().substring(3, 4).toLowerCase() + mt.getName().substring(4);
				if (ignoreList == null || !ignoreList.contains(propertyName))
					mapMethodWrite.put(propertyName, mt);
			}

		Method[] methodSource = source.getClass().getMethods();
		for (Method ms : methodSource)
			if (ms.getName().startsWith("get"))
				mapMethodRead.put(ms.getName().substring(3, 4).toLowerCase() + ms.getName().substring(4), ms);
			else if (ms.getName().startsWith("is"))
				mapMethodRead.put(ms.getName().substring(2, 3).toLowerCase() + ms.getName().substring(3), ms);

		Iterator<String> iter = mapMethodWrite.keySet().iterator();
		while (iter.hasNext()) {
			String propertyName = iter.next();
			if (mapMethodRead.get(propertyName) != null) {
				PropertyMethod pm = new PropertyMethod();
				pm.setPropertyName(propertyName);
				pm.setMethodRead(mapMethodRead.get(propertyName));
				pm.setMethodWrite(mapMethodWrite.get(propertyName));
				listPm.add(pm);
			}
		}

		for (PropertyMethod pm : listPm) {
			Object[] obj = new Object[1];
			obj[0] = pm.getMethodRead().invoke(source, new Object[0]);
			pm.getMethodWrite().invoke(target, obj);
		}

	}
}

其中List<PropertyMethod> listPm = new ArrayList<PropertyMethod>();用来存放完整的属性及属性Get/set方法,不借助 PropertyMethod而直接用两个Map也可。

 

另外两种copyProperties:

    org.apache.commons.beanutils.BeanUtils.copyProperties(target, source);

                            //source中的Timestamp类型属性值不可为null 否则会报错

    org.springframework.beans.BeanUtils.copyProperties(source, target);

 

Debian 11 下用hostapd+dnsmasq搭建WiFi热点:从命令行到实战(避坑指南) 本文详细介绍了在Debian 11系统上,使用hostapd和dnsmasq从命令行搭建稳定WiFi热点的完整实战流程。内容涵盖环境准备、无线网卡AP模式检查、服务深度配置,并重点提供了从服务启动失败到客户端无法上网等常见问题的系统性排错指南,帮助用户避开配置陷阱,成功创建可用的无线接入点。 阅读详情

相关推荐

手把手教你用Deep Single-Image Portrait Relighting实现人像光影重塑(附GitHub代码)

本文提供了一份详细的实战指南,手把手教你利用Deep Single-Image Portrait Relighting技术实现人像光影重塑。文章从环境搭建、核心原理拆解出发,逐步指导构建简易重光照流程,并探讨了使用预训练模型进行效果优化的进阶方法,最后附上避坑指南与常见问题排查,帮助开发者快速上手这一AI图像处理技术。

weixin_29065015的博客 316

java中BeanUtils.copyproperties的用法

<<<在[Hassan Blog的博客]看到这句话: 现在,还有一个坏消息:使用BeanUtils的成本惊人地昂贵!我做了一个简单的测试,BeanUtils所花费的时间要超过取数 据、将其复制到对应的 value对象(通过手动调用get和set方法),以及通过串行化将其返回到远程的客户机的时间总和。所以要小心使用这种威力!>>>(此刻想到mybatis_plus里的"开发一时爽,维护火葬场"不知真假!) ...

zylwoaini的博客 1万+

【车辆动力学】专栏目录汇总

车辆动力学知识目录汇总

CrazyRabbit的博客 1714

Beanutils.copyProperties( )使用遇到的问题

Beanutils.copyProperties( )使用遇到的问题 BeanUtils.copyProperties VS PropertyUtils.copyProperties 两者最大的区别是: BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties不会。 既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.copyProperties。 因此,PropertyUtils

wangjianweiaaa的博客 4212

.NET+Vue企业级RBAC权限平台:开箱即用的生产就绪方案

RBAC(基于角色的访问控制)是企业系统安全治理的基础模型,其核心在于将用户、角色与权限解耦,通过动态能力组合实现细粒度管控。在真实工程中,RBAC需突破静态角色限制,支持时间维度授权、前后端双重鉴权、行级数据范围控制等关键能力。本文聚焦于一套已落地金融、政务、制造等多行业的生产级实现——基于.NET Minimal API与Vue 3的前后端分离架构,提供菜单/按钮/接口/数据四层权限控制,内置滑动过期JWT、Redis权限缓存、动态路由加载与权限指令等开箱即用能力,显著降低权限配置与审计成本。

weixin_33326218的博客 276

博途PLC如何建立与笔记本电脑端的连接?(新手必会)

对S7-1500PLC下载硬件组态或程序,需要建立PC与PLC的连接。 由于S7-1500CPU都具有PN端口,因此建立PC与S7-1500PLC的连接通常使用工业以太网来实现。 1.使用网线连接PC-PLC 使用网线,一端连接PC的以太网卡端口,另一端连接S7-1500CPU的PN端口。 2.设置本机IP地址 2.1 确认本机要设置的IP地址段 本机IP地址要和PLC程序组态IP地址段前三位保持一致,后一位使用组态中没有用到的IP地址段。如下图所示。 那么看了这个图片应该就知道了,地址应该设置成192.

weixin_42430971的博客 1万+

Java BeanUtils.copyProperties() 详解及应用

方法用于将一个 Java 对象的属性复制到另一个对象。它在处理数据传输对象(DTO)、视图对象(VO)和实体对象(Entity)之间的数据传递时非常有用。source:源对象,属性值从这个对象中提取。target:目标对象,将属性值复制到这个对象中。是一个强大的工具,可以简化对象属性的拷贝操作。它在 Java 开发中扮演着重要的角色,尤其是在对象转换、数据封装和自动化测试等场景中。虽然它提供了很大的便利,但在性能要求较高的情况下,可能需要评估其他解决方案。

m0_73467713的博客 1万+

深度学习实战102-基于深度学习的网络入侵检测系统,利用各种AI模型和pytorch框架实现网络入侵检测

在明确了研究背景后,我们需要设定明确的项目目标。本项目的核心目标是开发一个高精度、低延迟的网络入侵检测系统检测准确率:达到95%以上,确保系统能够有效识别各类已知和未知的入侵行为。响应时间:控制在毫秒级范围内,以实现实时监测和快速响应。模型鲁棒性:在面对不同类型的网络环境和攻击手法时,系统需保持稳定的性能输出。可扩展性:系统设计需考虑未来可能面临的新型威胁,便于后续升级和维护。

微学AI的博客 1793

【Java基础】深拷贝、浅拷贝和BeanUtils.copyProperties

【Java基础】深拷贝、浅拷贝和BeanUtils.copyProperties

学习笔记 4646

论文必备 - YOLOv12热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式

本文带来的是YOLOv12热力图可视化功能,支持,以及。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。

Limiiiing的博客 1706

SAP_ABAP_SD_BAPI清单案例教程——销售订单开票_BAPI_BILLINGDOC_CREATEMULTIPLE_VF01_S4版本

SAP BAPI(Business Application Programming Interface)是SAP系统中的一组规范和标准,用于从SAP系统中获取数据、输入数据和更新数据。这些API允许开发者以编程方式与SAP系统交互,而无需编写大量的自定义代码。2.1 Copy代码 直接可使用。2.2 VF01开票。

java_zhong1990的专栏 2214

java copyproperties_java中 BeanUtils.copyProperties的用法

BeanUtils提供了对java发射和自省API的包装,这里对BeanUtils.copyProperties的用法做一个小小的介绍。通过函数名可以知道,copyProperties函数是对属性进行拷贝,该函数有两个参数,一个是原始的数据,另一个是接收这些属性的数据。这里给大家介绍一个我遇到的一个坑:在不同的jar包中,该函数的两个参数的位置不一样,有一种是copyProperties(java...

weixin_30739835的博客 1422

【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战

摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。

在上海谋生的软件喵记录喵生 626

Java:copyProperties

在Java中,方法通常指的是Apache Commons BeanUtils库中的一个方法,该方法用于将一个JavaBean的属性值复制到另一个JavaBean中。这种方法非常有用,尤其是在需要将一个对象的属性值复制到另一个对象时。

chinalog的专栏 7030

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java使用BeanUtils.copyProperties实现对象的拷贝

BeanUtils.copyProperties 方法是 Java 中 Spring 框架提供的一个非常实用的工具方法,它用于将一个 JavaBean 对象的属性值拷贝到另一个 JavaBean 对象中。这个方法主要用于简化对象之间的数据转换过程,尤其是在处理具有大量相同属性的对象时,可以大大减少代码量,提高开发效率。

pan_junbiao的博客 1779

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

深入浅出 BeanUtil.copyProperties:Java 属性复制的利器与避坑指南

优点:消除大量 getter/setter 调用。对象转换变得快速简单。API 简洁明了。缺点:不如直接调用代码快(但通常可接受)。对引用类型属性需特别注意。不能自定义映射规则(如不同名属性映射、类型转换器)。Spring 和 Apache Commons 的参数顺序不同。简单的、属性名和类型基本一致的 Bean 之间的转换(如 Entity <-> DTO <-> VO)。对性能要求不是极端苛刻的业务逻辑层。快速原型开发。

RoseJunjun666的博客 1578

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java对象拷贝——PropertyUtils.copyProperties()用法和性能

BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。 使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个...

@zpp的博客 3125

java中BeanUtils.copyProperties是什么方法

是 Apache Commons BeanUtils 库中的一个方法,它用于将一个 Java 对象的属性值复制到另一个对象中。该方法提供了一种方便的方式来进行对象属性的拷贝,无需手动逐个属性进行赋值。方法可以实现两个对象之间的属性复制,源对象的属性值会被复制到目标对象的相应属性中。该方法会自动匹配属性名并进行赋值,前提是目标对象具备相同名称和类型的属性。方法是通过反射机制实现的,因此它会对对象的属性进行复制,而不考虑 getter 和 setter 方法。还提供了其他一些方法来处理对象的属性,如。

weixin_58689039的博客 350

java浅拷贝BeanUtils.copyProperties引发的RPC异常

因为BeanUtils.copyProperties属于浅拷贝,而浅拷贝只是调用子对象的set方法,并没有将所有属性拷贝(引用的一个内存地址)。于是乎,在群里圈了服务提供方同学B看下,BG快速的用测试工具+本地debug的方式,验证了下报文格式,发现居然都调用成功了。近期参与了一个攻坚项目,前期因为其他流程原因,测试时间已经耽搁了好几天了,本以为已经解决了卡点,后续流程应该顺顺利利的,没想到 人在地铁上,bug从咚咚来~3、第二天早上一来,快速写了单测,确认服务端收到的报文格式,的确没有问题。

京东科技开发者 493

java实体类复制 BeanUtils.copyProperties

java实体类复制 BeanUtils.copyProperties 一个相同类的实体用 '=' 赋值后地址指向相同

lileiit的博客 312

Java开发使用lombok和BeanUtils.copyProperties

第一步、首先需要导入的包 <!-- commons-beanutils--> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artif...

非衣鲲化的博客 2914

spring java属性copy_「beanutils.copyproperties」Spring中提供的属性拷贝的方法BeanUtils.copyProperties - seo实验室...

beanutils.copypropertiesbeanutils.copyproperties通过java反射将类中当前属性字段对应的内容复制到另外一个类中//内部都是调用下面的私有方法1. BeanUtils.copyProperties(Object source, Object target) throws BeansException {}2.public static void cop...

weixin_34637138的博客 324

Java 实用工具类:深入使用 BeanUtils.copyProperties

在 Java 项目开发中,不同层(DTO、VO、Entity)之间经常需要进行属性转换。是 Spring 提供的用于快速实现对象属性复制的方法,本文将全面讲解它的使用方式、注意事项和拓展技巧。是轻量级对象属性复制工具,适合快速开发对于更复杂的属性映射,推荐使用 MapStruct 等工具可通过封装工具类或扩展实现过滤空值、批量处理等功能熟练掌握BeanUtils的使用,将显著提高 Java 开发效率,是日常开发中的实用利器之一。

x² 1414

java泛型如何深复制,Java泛型--BeanUtils.copyProperties引发的血案

BeanUtils.copyProperties引发的血案在一次使用BeanUtils.copyProperties的方法是,莫名其妙的报错,产生的代码分解如下:Java泛型--BeanUtils.copyProperties引发的血案把EntityA的值赋值给EntityB:在运行这段代码的时候,发生了异常的信息:Java泛型--BeanUtils.copyProperties引发的血案对于这个...

weixin_29322553的博客 1830

java copyproperties_java Beanutils.copyProperties( )用法

这是一篇开发自辩甩锅稿~~~~昨天测试小姐姐将我的一个bug单重开了,emmmm....内心OS:就调整下对象某个属性类型这么简单的操作,我怎么可能会出错呢,一定不是我的锅!!but再怎么抗拒,bug还是要改的,毕竟晚上就要发版本了~~老老实实将我前天改的部分跟了一遍,恩,完美,没有任何的缺失~~but本应success的测试数据,接口返还的结果确实是false来着,那还是老老实实debug吧。一...

weixin_39827625的博客 258

Java中copy 一个list,不用BeanUtils.copyProperties

);

miaohui8023的博客 785
上一篇: Tabpanel标题active样式修改
下一篇: HtmlEditor Readonly 或 Disabled
fireinjava
博客等级 码龄20年 5粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值