Java 內省、JavaBean、BeanUtils

內省

 

     內省(IntroSpector)自我檢查,主要對 JavaBean 進行操作。 內省是 Java 語言對 Bean 類屬性、事件的一種處理方法(也就是說給定一個javabean對象,我們就可以得到/調用它的所有的get/set方法)。

 

JavaBean

 

     (1)JavaBean 是一個特殊的 Java 類,它的方法名要符合一定的規則命名。例如 get()、set() 方法。一個 JavaBean 類可以當做普通的類來使用,但是一個普通的類並不一定可以當作 JavaBean 來操作。因爲它不一定符合 JavaBean 的規則。

 

       (2)爲什麼使用 JavaBean?在 JavaEE 的開發中,經常要使用到 JavaBean。很多環境就要求按 JavaBean 方式進行操作。再一個就是用 jdk 提供的 API 來把類當作 JavaBean 操作起來非常方便。

       (3)JavaBean 是一種特殊的 Java 類。主要用於傳遞數據信息,這種 Java 類中的方法要用於訪問私有的字段,且方法名符合某種命名規則。如果在兩個模塊之間傳遞多個信息,可以將這些信息縫扎un個到一個 JavaBean 中,這種 JavaBean 的實例對象通常稱之爲值對象(Value Object ,簡稱 VO)。這些信息在類中有私有字段來存儲,如果讀取或設置這些字段的值,則需要通過一些相應的方法來訪問。

 

       (4)jdk 中提供了對 JavaBean 進行操作的一些 API ,這套 API 就稱爲內省。用內省這套 API 來操作 JavaBean 比用普通類的方式更方便。

 

         編程實例:用內省來操作 JavaBean ,先讀取 JavaBean 的值,再設置 JavaBean 的屬性值。

 

          

 

         另一種方式:按照 BeanInfo 獲取類

 

        

 

BeanUtils 工具包

 

      由於對 JavaBean 的設置和讀取非常廣泛,apach 提供了專門對 JavaBean 進行操作的工具類。

 

        BeanUtils方便之一:BeanUtiles 類對屬性進行設置和獲取的時候都是以 String 類型進行操作的。

        BeanUtils方便之二:BeanUtiles 支持屬性的級聯操作。當 BeanUtiles 操作一個屬性時,而這個屬性又是一個對象,BeanUtiles 可以對下一級的對象進行設置。

        BeanUtils方便之三:BeanUtiles 可以將 JavaBean 的屬性封裝爲 Map 集合,通過 BeanUtils.describe(Object bean) 靜態方法。還可以將 Map 集合填充至 JavaBean 裏面去,通過 BeanUtils.populate(Object bean, Map properties) 方法。

 

        編程實例:通過 BeanUtils 對屬性進行設置和獲取

 

       

 

        同時,Beanutils 可以將 Map 作爲一個 JavaBean 對象來操作,來設置一個 Map 的值

 

       

 

 

補充:

 

      Introspector 類:提供工具獲得某個目標 Java Bean 支持的特性、事件和方法的一個標準方式。

 

        BeanInfo 接口:希望提供有關其 bean 的顯式信息的 bean 實現者可以提供某個 BeanInfo 類,該類實現此 BeanInfo 接口並提供有關其 bean 的方法、屬性、事件等顯式信息。

發佈了54 篇原創文章 · 獲贊 6 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章