byterat

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            54 隨筆 :: 0 文章 :: 15 評論 :: 0 Trackbacks

          關于Spring屬性編輯器詳解

          原文出處:
          http://stamen.javaeye.com/blog/24660

          最近剛在研究Spring的編輯器,發現很有意思,剛好galaxystar起了一個這樣貼,我想對PropertyEditor作一個詳細的整理會對大家有益,特定啟了這個新帖。

          所謂的PropertyEditor,顧名思義,就是屬性編輯器。由于Bean屬性通過配置文檔以字符串了方式為屬性賦值,所以必須有一個“東東”負責將這個字符串轉換為屬性的直接對象,如屬性的類型為int,那么編輯器要做的工作就是int i = Integer.parseInt("1");
          Spring為一般的屬性類型提供了默認的編輯器,BeanWrapperImpl是Spring框架中重要的類,它負責對注入的Bean進行包裝化的管理,常見屬性類型對應的編輯器即在該類中通過以下代碼定義:

          代碼

          但是,并非Bean的屬性都是這些常見的類型,如果你的Bean需要注入一個自定義類型的屬性,而又想享受IoC的好處,那么就只得自己開干,提供一個自定義的PropertyEditor了。
          下面,分幾個步驟來說明,定義一個自定義PropertyEditor的過程。
          1)首先,碰到的問題即是,要如何編輯自己的PropertyEditor,其實需要了解一點java.beans包的知識,在該包中,有一個java.beans.PropertyEditor的接口,它定義了一套接口方法(12個),即通過這些方法如何將一個String變成內部的一個對象,這兩個方法是比較重要的:
          a)setValue(Object value) 直接設置一個對象,一般不直接用該方法設置屬性對象
          b)setAsText(String text) 通過一個字符串來構造對象,一般在此方法中解析字符串,將構造一個
          類對象,調用setValue(Object)來完成屬性對象設置操作。

          2)實現所有的接口方法是麻煩的,java.beans.PropertyEditorSupport 適時登場,一般情況下,我們通過擴展這個方便類即可。

          3)編寫完后,就是在Spring配置文件中注冊該屬性類型編輯器的問題,Spring提供了專門的注冊工具類
          org.springframework.beans.factory.config.CustomEditorConfigurer,它負責將屬性類型和
          屬性編輯器關聯起來。到時BeanFactory注入Bean的屬性時,即會在注冊表中查找屬性類型對應的編輯器。

          下面給出一個小例子,例子先作一個簡單描述:
          1)Person 需要進行屬性注入的Bean,有兩個屬性 一個是name,一個是address Address是一個類
          2)Address Person的屬性類型,本身有3個屬性。
          3)AddressPropertyEditor Address類型對應的屬性編輯器。

          開工:
          1.Person.java

          代碼

          2.Address.java
          代碼


          AddressPropertyEditor.java
          代碼

          打開Spring配置文件,添上這兩個配置項:

          代碼

          ?

          下面是我自己寫的日期轉換類:

          我的配置:
          posted on 2007-01-20 21:21 比特鼠 閱讀(414) 評論(0)  編輯  收藏 所屬分類: Java Frameworks
          主站蜘蛛池模板: 灵山县| 滁州市| 香河县| 黔江区| 施甸县| 韩城市| 深水埗区| 陈巴尔虎旗| 漳浦县| 汉沽区| 乐安县| 台东县| 武鸣县| 靖州| 淮北市| 水富县| 册亨县| 双辽市| 安溪县| 逊克县| 沈丘县| 筠连县| 永德县| 武隆县| 惠东县| 许昌县| 湘阴县| 东至县| 德惠市| 武山县| 曲靖市| 长岛县| 永清县| 剑阁县| 嵊州市| 沁源县| 福泉市| 和平区| 闽侯县| 丰顺县| 和林格尔县|