beanutils(如何实现BeanUtils.copyProperties方法的功能)

:暂无数据 2026-06-10 20:20:02 :0

beanutils(如何实现BeanUtils.copyProperties方法的功能)

大家好,beanutils相信很多的网友都不是很明白,包括如何实现BeanUtils.copyProperties方法的功能也是一样,不过没有关系,接下来就来为大家分享关于beanutils和如何实现BeanUtils.copyProperties方法的功能的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

如何实现BeanUtils.copyProperties方法的功能

第一步: BeanUtils.copyProperties()与PropertyUtils.copyProperties() 1、 通过反射将一个对象的值赋值个另外一个对象(前提是对象中属性的名字相同)。 2、 BeanUtils.copyProperties(obj1,obj2); 经常闹混不知道是谁给谁赋值,无意中先到“后

android-studio中怎么添加beanutils

  1. 如果beanutils是一个jar包,添加的步骤:

    点击“app”module,然后菜单栏“Build——》Edit flavors——》Dependences”,点击右边栏的“+”,选中“Library Dependences”,最后输入“对应的jar”,导入缺失的beanutils包,最运行项目,问题解决。。。钊林IT分享

commons-beanutils可以干什么

  Jakarta Commons项目提供了相当丰富的API,我们之前了解到的Commons Lang只是众多API的比较核心的一小部分而已。Commons下面还有相当数量的子项目,用于解决各种各样不同方向的实际问题,BeanUtils就是其中的一个,用于处理JavaBeans。它利用Java的反射机制,从动态的生成对bean的getter和setter的调用代码,到模拟创建一个动态的bean,等等。这个包看似简单,却是很多开源项目的基石:如在著名的Struts和Spring Framework中,我们都能找到BeanUtils的影子。大家猜猜看,有哪位名人是BeanUtils的作者之一?没错,就是Struts的创始人Craig McClanahan。

  

  BeanUtils最核心的好处在于:我们在编码时,并不需要知道我们处理的JavaBeans具体是什么类型,有哪些属性,这些信息是可以动态获取的,甚至我们都可以不必去关心事实上是否存在这样一个具体的JavaBean类。我们只需要知道有一个JavaBean的实例,我们需要从中取得某个属性,设定某个属性的值,或者仅仅是需要一个属性表。要做到这些,依靠Sun提供的JavaBean规范似乎找不到一个很直接的方式,除非硬编码,将getXxxx()和setXxxx()直接写进我们的程序。但是这样就大大增加了代码的复杂度、耦合性和维护成本。

BeanUtils工具包使用异常,有加分!!!

package com.cxf.custom;
public class Student {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}

刚才那个引用错包问题晚了一步,这次不能晚了,把这个Student替换你的就OK了

这是运行结果:CaoChegn

如何利用 beanutils.copyproperties;更新部分

  spring和apache commons-beanutils中分别存在一个BeanUtils,提供了对java bean的常用操作。

  之前在写程序时,用到了两个不同类型但属性基本相同的对象的拷贝,结果在拷贝java.util.Date类型的对象属性时,由于其值为null,而抛异常。

  由于时间紧急,所以临时改成了get/set方式,幸亏对象的属性不算多。

  后来一直耿耿于怀这个问题,今天抽空看了一下spring和apache commons-beanutils包中BeanUtils.copyProperties的实现。

  spring中实现的方式很简单,就是对两个对象中相同名字的属性进行简单get/set,仅检查属性的可访问性。

  而commons-beanutils则施加了很多的检验,包括类型的转换,甚至于还会检验对象所属的类的可访问性。

  而且,commons-beanutils中的装换是不支持java.util.Date的。除了支持基本类型以及基本类型的数组之外,还支持java.sql.Date, java.sql.Time, java.sql.TimeStamp, java.io.File, javaio.URL这些类的对象,其余一概不支持。不过你可以自定义你的类的Converter。然后注册进去。

  感觉commons-beanutils包中的这个BeanUtils类的copyProperties方法,太过复杂,约束太多,而且使用不便,虽然可扩展性好了,但是易用性不高。

  总结:

  关于bean复制,如果属性较少,建议直接写个方法完成get/set即可。如果属性较多,可以自己采用反射实现一个满足自己需要的工具类,或者使用spring的那个beanutils类,不建议使用commons-beanutils包中的那个BeanUtils类,刚看了下,这个类对于内部静态类的对象复制也会出现问题,检验太复杂了,常会出现一些诡异的问题。毕竟我们bean复制一般就是简单的属性copy而已。

  而且,由于这些BeanUtils类都是采用反射机制实现的,对程序的效率也会有影响。因此,慎用BeanUtils.copyProperties!!!

为什么使用BeanUtils操做属性跑出来是空值

package

com.wzh.test.beanutils;

import

java.lang.reflect.InvocationTargetException;

import

java.text.ParseException;

import

java.text.SimpleDateFormat;

import

java.util.Date;

import

java.util.HashMap;

import

java.util.Map;

import

org.apache.commons.beanutils.BeanUtils;

import

org.apache.commons.beanutils.ConversionException;

import

org.apache.commons.beanutils.ConvertUtils;

import

org.apache.commons.beanutils.Converter;

import

org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

import

org.junit.Test;

//
使用
BeanUtils
操作
Bean
属性(第三方)

public

class

Demo1 {

@Test

public

void

test1() throws

IllegalAccessException,

InvocationTargetException {

Person p = new

Person();

BeanUtils.setProperty(p, “name“, “victor“);

System.out.println(p.getName());

}

@Test

public

void

test2() throws

IllegalAccessException,

InvocationTargetException {

Person p = new

Person();

//
自动将
String
转为
int
支持
8
种基本数据类型

BeanUtils.setProperty(p, “age“, “23“);

//
默认不支持时间转换

BeanUtils.setProperty(p, “Birthday“, “2012-3-1“);

System.out.println(p.getAge());

System.out.println(p.getBirthday());

}

@Test

public

void

test3() throws

IllegalAccessException,

InvocationTargetException {

//
为了让日期赋到
Bean
的
Birthday
属性上,我们给
BeanUtils
注册一个日期转换器
(
敲入代码未起作用,
需检查
)

//
方法
1.

ConvertUtils.register(new

Converter() {

@Override

public

Object convert(Class type, Object value) {

if

(value == null)

return

null;

if

(!(value instanceof

String)) {

System.out.println(“
不是日期类型
“);

throw

new

ConversionException(“
不是日期类型
“);

}

String str = (String) value;

if

(str.trim().equals(str)) {

return

null;

}

SimpleDateFormat df = new

SimpleDateFormat(“yyyy-MM-dd“);

如果你还想了解更多这方面的信息,记得收藏关注本站。

beanutils(如何实现BeanUtils.copyProperties方法的功能)

本文编辑:admin

更多文章:


汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

各位老铁们,大家好,今天由我来为大家分享云备份,以及手机云备份是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 02:40

java遍历map的key(java Map 怎么遍历)

java遍历map的key(java Map 怎么遍历)

大家好,java遍历map的key相信很多的网友都不是很明白,包括java Map 怎么遍历也是一样,不过没有关系,接下来就来为大家分享关于java遍历map的key和java Map 怎么遍历的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月11日 02:20

微信xlsx文件怎么打开(苹果手机微信打开excel)

微信xlsx文件怎么打开(苹果手机微信打开excel)

大家好,关于微信xlsx文件怎么打开很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于苹果手机微信打开excel的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 01:10

最近更新

promote翻译(英语翻译倡导怎么说)
2026-10-11 06:30:03 浏览:0
热门文章

标签列表