内省?
开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以SUN公司开发了一套API,专门用于操作java对象的属性。通过内省技术访问(java.beans包提供了内省的API)JavaBean的两种方式。
通过PropertyDescriptor类操作Bean的属性
通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。
beanutils工具包
1.什么是beanutils
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写。
PropertyUtils
ConvertUtils.regsiter(Converter convert, Class clazz)
2.Beanutils工具包的常用类:
BeanUtilsPropertyUtils
ConvertUtils.regsiter(Converter convert, Class clazz)
3.设置属性值、类型的自动转换、类型转换器
4.BeanUtils将Map属性自动放到Bean中
注意:Map的key必须要与Bean的属性一致。
Map m = new HashMap();
m.put("name", "张三"); //key名一定要与对象中的变量名一致
m.put("age", "18"); //key名一定要与对象中的变量名一致
m.put("birthday", "1992-05-12"); //key名一定要与对象中的变量名一致
Student stu = new Student();
ConvertUtils.register(new DateLocaleConverter(), Date.class);
BeanUtils.populate(stu, m); //将Map属性自动放到Bean中
System.out.println(stu.getName());