<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    byterat

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      54 隨筆 :: 0 文章 :: 15 評(píng)論 :: 0 Trackbacks

    關(guān)于Spring屬性編輯器詳解

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

    最近剛在研究Spring的編輯器,發(fā)現(xiàn)很有意思,剛好galaxystar起了一個(gè)這樣貼,我想對(duì)PropertyEditor作一個(gè)詳細(xì)的整理會(huì)對(duì)大家有益,特定啟了這個(gè)新帖。

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

    代碼

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

    2)實(shí)現(xiàn)所有的接口方法是麻煩的,java.beans.PropertyEditorSupport 適時(shí)登場(chǎng),一般情況下,我們通過擴(kuò)展這個(gè)方便類即可。

    3)編寫完后,就是在Spring配置文件中注冊(cè)該屬性類型編輯器的問題,Spring提供了專門的注冊(cè)工具類
    org.springframework.beans.factory.config.CustomEditorConfigurer,它負(fù)責(zé)將屬性類型和
    屬性編輯器關(guān)聯(lián)起來。到時(shí)BeanFactory注入Bean的屬性時(shí),即會(huì)在注冊(cè)表中查找屬性類型對(duì)應(yīng)的編輯器。

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

    開工:
    1.Person.java

    代碼

    2.Address.java
    代碼


    AddressPropertyEditor.java
    代碼

    打開Spring配置文件,添上這兩個(gè)配置項(xiàng):

    代碼

    ?

    下面是我自己寫的日期轉(zhuǎn)換類:

    我的配置:
    posted on 2007-01-20 21:21 比特鼠 閱讀(413) 評(píng)論(0)  編輯  收藏 所屬分類: Java Frameworks
    主站蜘蛛池模板: 麻豆精品国产免费观看| 四虎国产精品免费视| 亚洲av无码成人精品区一本二本| 国产一卡二卡≡卡四卡免费乱码| japanese色国产在线看免费| 中文精品人人永久免费| 久久精品国产亚洲av麻豆| 欧美日韩国产免费一区二区三区| 亚洲精品无码不卡在线播放HE| 一区二区三区视频免费| 亚洲成a人片在线观看中文动漫| 免费av欧美国产在钱| 一本岛v免费不卡一二三区| 亚洲理论片在线观看| 99久久久国产精品免费牛牛四川| 丁香婷婷亚洲六月综合色| 成人特黄a级毛片免费视频| 在线播放免费人成视频网站| 亚洲特级aaaaaa毛片| 亚洲精品国产自在久久| 亚洲人成人伊人成综合网无码| 伊伊人成亚洲综合人网7777| 亚洲免费观看视频| 亚洲综合精品一二三区在线| 18女人腿打开无遮掩免费| 国产成人不卡亚洲精品91| 亚洲一卡2卡3卡4卡国产网站| 亚洲熟妇中文字幕五十中出| 成人激情免费视频| 麻豆一区二区三区蜜桃免费| 亚洲毛片av日韩av无码| 永久免费av无码不卡在线观看| 中文字幕不卡免费高清视频| 亚洲国产区男人本色| 日本亚洲国产一区二区三区| 午夜影视在线免费观看| 国产成人免费午夜在线观看| 日本免费高清视频| 羞羞视频免费网站在线看| 亚洲国产日产无码精品| 亚洲av无码天堂一区二区三区|