JavaBean-平常筆記java
簡單來講,JavaBean是一種符合Java語法的可重用的組件(類)。
工具
Web應用程序中使用的JavaBean通常要知足以下要求:this
1)JavaBean成員有:方法(Method)、事件(Event)、屬性(property)。spa
這裏的屬性是property而不是attribute。3d
1)attribute:表示狀態,常認爲字段(Field)是屬性attribute。code
2)property:也表示狀態,可是不是字段,是由類中屬性的操做方法(getter/setter)來決定屬性名稱。orm
設置屬性值:writableMethod:setter方法對象
獲取屬性值:readableMethod:getter方法blog
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包)。