JavaBean规范
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaBean规范相关的知识,希望对你有一定的参考价值。
JavaBean-日常笔记
什么是JavaBean?
简单来说,JavaBean是一种符合Java语法的可重用的组件(类)。
Web应用程序中使用的JavaBean一般要满足如下要求:
- 类必须要使用public修饰。
- 必须要有一个访问权限为public的无参构造器。
- 属性的访问权限为private。
- 属性类型必须为String或者基本类型。
- 属性名和类型由获取方法(getter)和设置方法(setter)推导而出。
- 必须按命名约定来命名访问权限为public的获取方法和设置方法。
- 设置方法的参数类型和获取方法的返回类型必须相同。
JavaBean
1)JavaBean成员有:方法(Method)、事件(Event)、属性(property)。
这里的属性是property而不是attribute。
1)attribute:表示状态,常认为字段(Field)是属性attribute。
2)property:也表示状态,但是不是字段,是由类中属性的操作方法(getter/setter)来决定属性名称。
设置属性值:writableMethod:setter方法
获取属性值:readableMethod:getter方法
ex: setName/getName-->属性:name
setAge/getAge-->属性:age
如果数据类型为boolean,则为is方法。
2)内省机制(Introspector):操作(获取/设置)JavaBean中的方法/属性/事件。
使用static BeanInfo getBeanInfo(Class<?> beanClass)来获取指定字节码对象的JavaBean信息对象。
例如现有Person类,含属性(name,age)以及相应的getter和setter方法。
则可以使用Beaninfo bi = Introspector.getBeanInfo(Person.class);获取到Person中的所有属性。
public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
常用方法:
1.PropertyDescriptor[ ] getPropertyDescriptors();获取JavaBean中的所有属性描述符。
public class IntrospectorDemo { public static void main(String[] args) throws IntrospectionException { BeanInfo beanInfo = Introspector.getBeanInfo(Person.class); PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : pds) { //得到每一个属性的描述器 System.out.println("属性名称:"+pd.getName()); System.out.println("属性类型:"+pd.getPropertyType()); System.out.println("set方法"+pd.getWriteMethod()); System.out.println("get方法"+pd.getReadMethod()); } } }
输出结果:
3)BeanUtils的使用
开发中,常用Apache common中的BeanUtils工具来操作JavaBean。
可以通过内省技术进行数据的封装,但是每一次写内省程序是一件很麻烦的事情,并且内省匹配也会有问题(例如一侧是String,一侧是int,还需要进行数据转化),
因此,内省(基于反射,方便操作javabean的API)封装form数据到javabean的代码,一般不自己编写,使用已经编写好的工具开发包BeanUtils开发包。
使用该工具前,需要提前去导入相应的jar包。
下载BeanUtils的jar :commons-beanutils 、commons-logging,需要同时下载这两个jar包,前者依赖后者。
这里就直接说明一些常用方法。
1.BeanUtils.setProperty(Bean对象,属性,属性的值);
2.BeanUtils.getProperty(Bean对象,属性);
3.BeanUtils.copyProperties(Bean对象,Bean对象);
属性拷贝:可以从JavaBean-->JavaBean, Map-->JavaBean(需要导common-collections包)。
以上是关于JavaBean规范的主要内容,如果未能解决你的问题,请参考以下文章