32_使用BeanUtils工具包操作JavaBean
由于对属性设置值和得到值的需求很多,使用频率很高,所以有一些开源勇士 不满足于JavaBean API 中IntroSpector来操作bean,
写出来了通用的BeanUtils工具,来进一步简化对java bean的操作,并开源放在apache网站上提供免费下载。
Beanutils工具包
- 演示用eclipse如何加入jar包,先只是引入beanutils包,等程序运行出错后再引入logging包。
1 commons-beanutils-1.9.2-bin.zip http://u2l.info/3VN80n
2 commons-beanutils-1.9.2-src.zip http://u2l.info/3o99D3
3 commons-logging-1.1.3-bin.zip http://u2l.info/2D1d0m
4 commons-logging-1.1.3-src.zip http://u2l.info/nKLKp
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 缺少logging的jar包
这个日志包,很多框架都在用。
- 在前面内省例子的基础上,用BeanUtils类先get原来设置好的属性,再将其set为一个新值。
- get属性时返回的结果为字符串,set属性时可以接受任意类型的对象,通常使用字符串。
这非常适合浏览器传过来的字符串对对象进行set。
- 用PropertyUtils类先get原来设置好的属性,再将其set为一个新值。
- get属性时返回的结果为该属性本来的类型,set属性时只接受该属性本来的类型。
java bean
package com.itcast.day1; import java.util.Date; public class ReflectPoint {
private Date birthday=new Date(); private int x;
public int y;
public ReflectPoint(int x, int y) {
super();
this.x = x;
this.y = y;
} @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ReflectPoint other = (ReflectPoint) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
} public int getX() {
return x;
} public void setX(int x) {
this.x = x;
} public int getY() {
return y;
} public void setY(int y) {
this.y = y;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} @Override
public String toString() {
return "ReflectPoint [birthday=" + birthday + ", x=" + x + ", y=" + y
+ "]";
} }
测试类:
package com.itcast.day2;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils; import com.itcast.day1.ReflectPoint;
public class IntroSpectorTest { public static void main(String[] args) throws Exception{ ReflectPoint rf1=new ReflectPoint(3,4); Object value=6;
System.out.println(BeanUtils.getProperty(rf1, "x").getClass().getName());// x是int,但是用beanutils设值时为java.lang.String
System.out.println(rf1.getX());
BeanUtils.setProperty(rf1, "x",1); //原来类型 设值
BeanUtils.setProperty(rf1, "x","2"); //支持String类型 设值
System.out.println(rf1.getX()); BeanUtils.setProperty(rf1, "birthday.time", "111");//支持属性级联操作
System.out.println(BeanUtils.getProperty(rf1, "birthday.time").getClass().getName());//java.lang.String 111
Map mm=BeanUtils.describe(rf1);//javabean转成map
System.out.println(rf1);//ReflectPoint [birthday=Thu Jan 01 08:00:00 GMT+08:00 1970, x=2, y=4] Map map=new HashMap();
map.put("x", 1);
map.put("y",1);
BeanUtils.populate(rf1, map);//把map转换成javabean
System.out.println(rf1);//ReflectPoint [birthday=Thu Jan 01 08:00:00 GMT+08:00 1970, x=1, y=1] //PropertyUtils.setProperty(rf1, "x", "9");//运行出错!因为PropertyUtils只支持原来的类型,这点没有BeanUtils强大!
PropertyUtils.setProperty(rf1, "x", 9);
System.out.println(rf1.getX());//9
} }
32_使用BeanUtils工具包操作JavaBean的更多相关文章
- java高新技术-操作javaBean
1. 对javaBean的简单内省操作 public class IntroSpectorTest { public static void main(String[] args) throws Ex ...
- 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...
- java 内省综合案例和Beanutils工具包
演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...
- JDBC--使用beanutils工具类操作JavaBean
1.在JavaEE中,Java类的属性通过getter,setter来定义: 2.可使用BeanUtils工具包来操作Java类的属性: --Beanutils是由Apache公司开发,能够方便对Be ...
- JavaWeb -- 内省—beanutils工具包 的使用
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. Beanu ...
- Commons BeanUtils工具包
简介: BeanUtils工具包是由Apache公司所开发,提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理. 我们知道,一个JavaBean通常包含了大 ...
- 内省—beanutils工具包
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. BeanU ...
- javaweb学习总结五(内省、beanUtils工具包)
一:内省的概念 1:内省是反射的一种特例,由于在反射中频繁的操作javabean,所以为了方便反射 javabean,sun公司开发出一套API提高效率. 2:javaBean,就是用来封装客户端请求 ...
- 使用内省的方式操作JavaBean
import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; im ...
随机推荐
- 在Kubernetes中部署GlusterFS+Heketi
目录 简介 Gluster-Kubernetes 部署 环境准备 下载相关文件 部署glusterfs 部署heketi server端 配置heketi client 简介 在上一篇<独立部署 ...
- Mac上安装pipenv时报错
version:mac os Mojave 10.14.2 执行时报错: pip install pipenv 改为: sudo pip install pipenv --upgrade --igno ...
- zabbix 监控基础
一.监控系统基础概念 1.监控系统的工作内容 数据采集 --> 数据存储 --> 数据展示 --> 报警 传感器 时间序列数据 趋势图 采集到的数据超出阈(yu)值 2 ...
- 实验吧 php
Once More 题目地址:http://ctf5.shiyanbar.com/web/more.php 打开直接有源码: <?php if (isset ($_GET['password'] ...
- 大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)
第8章 压缩和存储(Hive高级)8.1 Hadoop源码编译支持Snappy压缩8.1.1 资源准备8.1.2 jar包安装8.1.3 编译源码8.2 Hadoop压缩配置8.2.1 MR支持的压缩 ...
- 阿里云 Ubuntu16.04 apache2 ssl证书下载与安装(必须有域名)
阿里云申请免费SSL证书并下载(包含xxx.key|xxx._root_bundle.crt|xxx._public.crt三个文件) 用https是自己的网站收到保护,不易被攻克,所以保护自己的网站 ...
- c#实战开发:用.net core开发一个简单的Web以太坊钱包 (六)
今天就来开发一个C# 版的简易钱包 先回顾以前的内容 c#实战开发:以太坊Geth 命令发布智能合约 (五) c#实战开发:以太坊Geth 常用命令 (四) c#实战开发:以太坊钱包快速同步区块和钱包 ...
- SQL SERVER 如何声明一个变量
DECLARE @i AS INT; ; GO 或者 ; GO 表表达式形式 ); SET @empname = (SELECT firstname + N' ' + lastname FROM HR ...
- WebFrom 小程序【分页功能 】
实现分页展示功能 基本功能:上一页.下一页.首页.尾页.跳转 两个重要的变量 1.每页显示几条数据 2.现在是第几页 方法 } /*表格样式*/ .tab { width: %; backgr ...
- (整理)Sublime Text 3 安装、破解、安装Package Control、汉化、添加到右键菜单、代码格式化、禁止更新
Sublime Text 3好用,但是每次安装到最后用着顺手,得在网上找半天安装.破解.安装Package Control.汉化.添加到右键菜单.代码格式化等等的教程,今天有空给自己整理一下吧. 一. ...