javabeans 内省 introspector BeanUtils
javaBeans 属性的概念
不只是字段,而是其get set 方法
且该get方法有返回值的称为属性,继承Object类的getClass方法
package com.swift.demo1;
public class Person {
String name;
int age;
String password;
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;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAd() {//这个算一个属性,虽让没有字段,但如果没有返回值不算一个属性
return "getAd.....";
}
}
属性个数
package com.swift.demo1; import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor; import org.junit.jupiter.api.Test; public class TestIntro {
@Test
public void test1() throws Exception {
BeanInfo info=Introspector.getBeanInfo(Person.class);
PropertyDescriptor[] pds=info.getPropertyDescriptors();
for(PropertyDescriptor des:pds) {
System.out.println(des.getName());
}
}
}

阻止父类的getClass属性用
package com.swift.demo1; import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor; import org.junit.jupiter.api.Test; public class TestIntro {
@Test
public void test1() throws Exception {
BeanInfo info=Introspector.getBeanInfo(Person.class,Object.class);
PropertyDescriptor[] pds=info.getPropertyDescriptors();
for(PropertyDescriptor des:pds) {
System.out.println(des.getName());
}
}
}
BeanUtils使用jar包
需要两个:

都可以在Apache网站下载
BeanUtils具有比Introspector更强大的功能,可以在基本数据类型间直接转换,也可以把文本框中的字符串通过注册器转换器进行转换
自己转日期格式
package com.swift.demo1; import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.junit.Test; public class TestUtils {
@Test
public void test() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new Converter() { @Override
public Object convert(Class type, Object value) {
String str=(String) value;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);//
}
}
}, Date.class); BeanUtils.setProperty(p, "name", "swift");
BeanUtils.setProperty(p, "age", "30");
BeanUtils.setProperty(p, "password", "123");
BeanUtils.setProperty(p, "date", "2018-02-19"); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
}
}
可以用现成的
package com.swift.demo1; import java.lang.reflect.InvocationTargetException;
import java.util.Date; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test; public class TestUtils {
@Test
public void test() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new DateLocaleConverter(),Date.class); BeanUtils.setProperty(p, "name", "swift");
BeanUtils.setProperty(p, "age", "30");
BeanUtils.setProperty(p, "password", "123");
BeanUtils.setProperty(p, "date", "2018-02-19"); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
}
}
集合map加到BeanUtils
package com.swift.demo1; import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test; public class TestUtils {
@Test
public void test() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new DateLocaleConverter(),Date.class); BeanUtils.setProperty(p, "name", "swift");
BeanUtils.setProperty(p, "age", "30");
BeanUtils.setProperty(p, "password", "123");
BeanUtils.setProperty(p, "date", "2018-02-19"); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
} @Test
public void test1() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new DateLocaleConverter(),Date.class); Map<String, String> map=new HashMap<String, String>();
map.put("name", "swift");
map.put("age", "30");
map.put("password", "123");
map.put("date", "2018-02-19"); BeanUtils.populate(p, map); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
}
}
javabeans 内省 introspector BeanUtils的更多相关文章
- JavaBeans与内省(Introspector)
JavaBean与Introspector 反射和内省操作很多时候都是在以后要做框架的时候作用非常大. 现在你学的是面向对象编程,即:你所写代码都能够找到对应的类或接口,找到具体的方法写出对应的 ...
- Java 内省(Introspector)和 BeanUtils
人生若只如初见,何事秋风悲画扇. 概述 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息, ...
- 内省(introspector)------>JavaBean
内省(introspector)------>JavaBean 1.问什么要学内省? 开发框架时,经常需要Java对象的属性来来封装程序的数据,每次使用反射技术完成此操作过于 ...
- 内省(Introspector)
内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法 目的:主要用于传递数据信息,这种类中的方法主要用于访问私有的字段(且方法名符合某种命名规则) p ...
- JavaEE JavaBean 反射、内省、BeanUtils
JavaEE JavaBean 反射.内省.BeanUtils @author ixenos JavaBean是什么 一种规范,表达实体和信息的规范,便于封装重用. 1.所有属性为private2.提 ...
- 深入理解Java:内省(Introspector)
深入理解Java:内省(Introspector) 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传 ...
- JAVA中反射机制五(JavaBean的内省与BeanUtils库)
内省(Introspector) 是Java 语言对JavaBean类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法 ...
- Java 内省(Introspector)深入理解
Java 内省(Introspector)深入理解 一些概念: 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类 ...
- 【小家Spring】聊聊Spring中的数据绑定 --- BeanWrapper以及内省Introspector和PropertyDescriptor
#### 每篇一句 > 千古以来要饭的没有要早饭的,知道为什么吗? #### 相关阅读 [[小家Spring]聊聊Spring中的数据转换:Converter.ConversionService ...
随机推荐
- PCB的版本控制
http://club.szlcsc.com/article/details_1783_1.html 转载自:http://www.amobbs.com/thread-5606014-1-1.html ...
- Java基础14-多维数组
1.二位数组可以看成以数组为元素的数组 2.java中多维数组的声明和初始化一样,应该从高维到低维的顺序进行,例如 int[][] a=new int[3][]; a[0]=new int[2]; a ...
- how to use Eclipse with Maven
install Eclipse LUNA; download and unzip Maven; Eclipse=>window=>preference=>maven=>inst ...
- @enable跟@import注解
参考文章: 讲@import的相关内容:https://blog.csdn.net/u012437781/article/details/78626134 讲为什么registrar没有注入:http ...
- Spring核心-IOC-AOP-模版
1. POM- 1.1 中央仓库 1.2 各包作用 spring-core.jar 核心工具类 spring-beans.jar 是所有应用都要用到的,它包含访问配置文件.创建和管理bean 以及进行 ...
- HDU 5441——Travel——————【并查集+二分查界限】
Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- [转]【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
本文转自:http://www.cnblogs.com/yuangang/p/6000460.html 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客 ...
- WebService的搭建,部署,简单应用和实体类结合使用
WebService:一种跨编程语言和操作系统平台的远程调用技术,SOAP.WSDL(WebServicesDescriptionLanguage).UDDI(UniversalDescription ...
- ejs判断变量是否为空并输出
在ejs里输出变量如下: <%=errmsg%> 但如果errmsg变量不存在则会报错:errmsg is undefined 我们可以改为: <%=locals.errmsg || ...
- SpringMVC 的初始化参数绑定
初始化参数绑定:日期格式 一:首先我们先做一种日期格式的绑定,配置初始化参数绑定和自定义类型转换有着异曲同工之妙 配置步骤如下: 1.我们首先配置applicationContext.xml,进行扫描 ...