内省—beanutils工具包
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写。
BeanUtils的作用:
1)支持String到8种基本数据类型的转换;
2)其他引用数据类型都需要注册转换器:ConvertUtils.register(Converter,Class);
public class Person {
private String name;
private String password;
private Integer age;
private Date birthday;
getter/setter
}
采用beanutils设置属性
@Test
public void test1() throws Exception {
Person person = new Person();
BeanUtils.setProperty(person, "name", "zhangsan");
System.out.println(person.getName());
}
采用beanutils拷贝对象的属性(基本类型)
@Test
public void test2() throws Exception {
String name = "zhangsan";
String password = "123";
String age = "34"; Person person = new Person();
BeanUtils.setProperty(person, "name", name);
BeanUtils.setProperty(person, "password", password);
BeanUtils.setProperty(person, "age", age);// 自动类型转换,只支持8种基本数据类型 System.out.println(person);
}
采用beanutils拷贝对象的属性(非基本类型)
@Test
public void test3() throws Exception {
String name = "zhangsan";
String password = "123";
String age = "34";
String birthday = "1980-09-05"; Person person = new Person();
BeanUtils.setProperty(person, "name", name);
BeanUtils.setProperty(person, "password", password);
BeanUtils.setProperty(person, "age", age);// 自动类型转换
BeanUtils.setProperty(person, "birthday", birthday); // 类型转换失败
System.out.println(person);
}
为让Date能够赋值到birthday属性上,我们给beanutils注册一个日期转换器。
改进代码如下:
@Test
public void test4() throws Exception {
String name = "zhangsan";
String password = "123";
String age = "34";
String birthday = "1980-09-05"; ConvertUtils.register(new Converter() {
@Override
public Object convert(Class type, Object value) {
if (value == null) {
return null;
} if (!(value instanceof String)) {
throw new ConversionException("只支持String类型的转换!");
} String str = (String) value;
if (null == str || "".equals(str.trim())) {
return null;
} SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
return format.parse(str);
} catch (ParseException e) {
throw new ConversionException(e);
}
} }, Date.class); Person person = new Person();
BeanUtils.setProperty(person, "name", name);
BeanUtils.setProperty(person, "password", password);
BeanUtils.setProperty(person, "age", age);// 自动类型转换
BeanUtils.setProperty(person, "birthday", birthday);
System.out.println(person);
}
采用beanutils自带的日期类型转换器
@Test
public void test5() throws Exception {
String name = "zhangsan";
String password = "123";
String age = "34";
String birthday = "1980-09-05"; ConvertUtils.register(new DateLocaleConverter(), Date.class); Person person = new Person();
BeanUtils.setProperty(person, "name", name);
BeanUtils.setProperty(person, "password", password);
BeanUtils.setProperty(person, "age", age);// 自动类型转换
BeanUtils.setProperty(person, "birthday", birthday);
System.out.println(person);
}
收集数据到map中,并通过beanutils拷贝到指定的对象中去
@Test
public void test6() throws Exception { Person person = new Person(); ConvertUtils.register(new DateLocaleConverter(), Date.class); Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "aa");
map.put("password", "123");
map.put("age", 23);
map.put("birthday", "1980-09-05"); // 用map集合中的值,填充bean的属性,
// 注意:属性名称必须要一致
BeanUtils.populate(person, map); System.out.println(person);
}
内省—beanutils工具包的更多相关文章
- JavaWeb -- 内省—beanutils工具包 的使用
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. Beanu ...
- 内省、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的价值,先用 ...
- 32_使用BeanUtils工具包操作JavaBean
由于对属性设置值和得到值的需求很多,使用频率很高,所以有一些开源勇士 不满足于JavaBean API 中IntroSpector来操作bean, 写出来了通用的BeanUtils工具,来进一步简 ...
- Commons BeanUtils工具包
简介: BeanUtils工具包是由Apache公司所开发,提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理. 我们知道,一个JavaBean通常包含了大 ...
- javaweb学习总结五(内省、beanUtils工具包)
一:内省的概念 1:内省是反射的一种特例,由于在反射中频繁的操作javabean,所以为了方便反射 javabean,sun公司开发出一套API提高效率. 2:javaBean,就是用来封装客户端请求 ...
- JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用
Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...
- javase(14)_java基础增强
一.Eclipse的使用 1.在eclipse下Java程序的编写和run as,debug as,及java运行环境的配置. 2.快捷键的配置,常用快捷键: •内容提示:Alt + / •快速修复: ...
- JavaBean 内省API BeanUtils工具 泛型 xml xml约束
1 什么是JavaBean?有何特征? 1)符合特定规则的类 2)JavaBean分二类: a)侠义的JavaBean .私有的字段(Field) .对私 ...
随机推荐
- 转:Why SeaJS
原文地址:http://chaoskeh.com/blog/why-seajs.html Why SeaJS 前言 本文主要面向刚接触 SeaJS 的同学.文章会先提出传统 Javascript 开发 ...
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
文章转自:http://blog.sina.com.cn/s/blog_568e66230100hy6a.html FCKEditor于2009年被更名为新一代的CKEditor和CKFinder,见 ...
- (转)ORACLE触发器详解
本文转载自:http://blog.csdn.net/indexman/article/details/8023740/ ORACLE PL/SQL编程之八: 把触发器说透 本篇主要内容如下: 8.1 ...
- 【oracle】数据库、表空间、用户、数据表之间的关系
来自为知笔记(Wiz) 附件列表 新建_032515_030437_PM.jpg
- 黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
版本:v1.1更新时间:2013-05-25更新内容:优化性能功能说明: 可以有效防护XSS,sql注射,代码执行,文件包含等多种高危漏洞. 使用方法: 将waf.php传到要包含的文件的目录 在页面 ...
- Navicat(连接) -1之Navicat Cloud
Navicat Cloud Navicat Cloud 提供一个云服务,同步不同机器和平台的 Navicat 连接.查询.模型和虚拟组.当添加一个连接到 Navicat Cloud,它的连接设置和查询 ...
- Scala第一章学习笔记
面向对象编程是一种自顶向下的程序设计方法.用面向对象方法构造软件时,我们将代码以名词(对象)做切割,每个对象有某种形式的表示服(self/this).行为(方法).和状态(成员变量).识别出名词并且定 ...
- vim 上下左右变成ABCD 解决办法
一.缘由 一次发现VIM编辑文件,发现上下左右键变输入ABCD.猜测vimrc没设置好. 二.解决办法: ls -l /etc/ |grep vim,发现有两个结果vimrc.rpmnew,vimrc ...
- 如何判断TCP包是否发送成功
1. TCP发送接口:send() TCP发送数据的接口有send,write,sendmsg.在系统内核中这些函数有一个统一的入口,即sock_sendmsg().由于TCP是可靠传输,所以对TCP ...
- Mobirise
网站建设器Mobirise v1.9.2 免费版 - 绿色软件联盟 2015年9月5日 - 网站建设器Mobirise是一个用户友好的程序,使您可以构建桌面和移动网站,准备在Javas cript中. ...