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

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

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

    閑人野居
    好好學(xué)習(xí),天天向上
    posts - 57,  comments - 137,  trackbacks - 0

    ??????? 這幾天,閑著無事,看起了spring的源碼,順便也學(xué)習(xí)一下,人家的設(shè)計理念。
    ??????? spring的源碼還是比較多的,但是區(qū)分的層次比較可以。對比了一下自己設(shè)計的程序,有點慚愧,每次分包的時候,設(shè)計的都比較爛。
    ??????? 閑話少說,先來看看spring 的核心包beans。
    ??????? beans 包主要提供了接口和類用于處理java beans。
    ??????? 其中最主要的接口是BeanWrapper
    ??????? Spring 的中心接口,用于訪問javabeans 的低層操作。默認(rèn)實現(xiàn)為BeanWrapperImpl 提供分析和處理標(biāo)準(zhǔn)java beans 用于get set 屬性,取得屬性描述,查詢屬性的讀/寫能力。
    ????用法非常簡單
    ??? TestBean tb = new TestBean();
    ????BeanWrapper bw = new BeanWrapperImpl(tb);
    ??? bw.isReadableProperty("age");//判斷age屬性是否可讀
    ??? bw.setPropertyValue("name", "tom"); //設(shè)置name屬性的值為tom
    ??? bw.getPropertyValue("int2")//取得屬性
    ??? //當(dāng)然,最強大的是能嵌套設(shè)置屬性,如:
    ??? //tb中有個spouse的屬性,也為TestBean,這樣
    ?? ?bw.setPropertyValue("spouse.name", "tom");?
    ????//等價于tb.getSpouse().setName("tom");
    ??? //bw 同樣支持?jǐn)?shù)組和集合,map屬性設(shè)置
    ??? bw.getPropertyValue("array[0].name");
    ??? bw.getPropertyValue("map[key4][0].name");
    ????
    ????beans包 還提供了一個PropertyValues用于保存多個屬性值,默認(rèn)的實現(xiàn)MutablePropertyValues
    ??? MutablePropertyValues pvs = new MutablePropertyValues();
    ??? pvs.addPropertyValue("array[0].name", "name5");
    ??? pvs.addPropertyValue("array[1].name", "name4");
    ??? bw.setPropertyValues(pvs);
    ???
    ??? BeanWrapper的層次結(jié)構(gòu),也比較簡單繼承于ConfigurablePropertyAccessor ,而ConfigurablePropertyAccessor 又繼承于PropertyAccessor 和?? PropertyEditorRegistry 接口。
    ??????? 有一點不太明白,為什么ConfigurablePropertyAccessor 要繼承于PropertyEditorRegistry?
    ??????? PropertyEditorRegistry 的主要作用是提供方法用于注冊JavaBeans PropertyEditors。默認(rèn)的實現(xiàn)為? PropertyEditorRegistrySupport
    ??????? 這就使得BeanWrapperImpl 也需要繼承PropertyEditorRegistrySupport,從字面意義上來說,兩個類不是很有關(guān)系,其實最主要用到的方法,也就是registerDefaultEditors(),注冊spring中所有的屬性編輯類。
    ??????? beans 包中還有兩個接口TypeConverter和Mergeable 。TypeConverter由BeanWrapperImpl實現(xiàn),主要用于轉(zhuǎn)換屬性值。其主要的工作由TypeConverterDelegate 這個包內(nèi)類完成的。Mergeable 主要是用來合并值得,不過具體的實現(xiàn),在org.springframework.beans.factory.support 包中。
    ??????? beans 包中提供了兩個有用的工具類,BeanUtils和PropertyAccessorUtils。

    posted on 2006-09-02 10:10 布衣郎 閱讀(1191) 評論(0)  編輯  收藏 所屬分類: spring

    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 357212
    • 排名 - 155

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久久亚洲精品无码| 亚洲免费一区二区| 亚洲综合婷婷久久| 两个人日本WWW免费版| 久久精品国产亚洲AV麻豆不卡| 免费观看四虎精品成人| va亚洲va日韩不卡在线观看| 亚洲AV无码男人的天堂| 国产美女被遭强高潮免费网站| 亚洲丶国产丶欧美一区二区三区| 日韩免费无砖专区2020狼| 爱爱帝国亚洲一区二区三区| 国产免费卡一卡三卡乱码| 特级毛片免费观看视频| 久久午夜免费鲁丝片| 亚洲男人的天堂在线| 日韩免费a级毛片无码a∨| 亚洲国产精品无码中文lv| 又粗又黄又猛又爽大片免费| 一级毛片免费播放视频| 久久久无码精品亚洲日韩蜜桃| 99爱在线精品免费观看| 亚洲精品蜜夜内射| 青青草原亚洲视频| 久视频精品免费观看99| 亚洲人成网站999久久久综合| 免费看小12萝裸体视频国产| 国产免费伦精品一区二区三区| 亚洲高清在线播放| 四虎永久在线精品免费网址| 香蕉视频在线观看免费| 亚洲成AV人片在线播放无码| 日本人的色道免费网站| 美女被爆羞羞网站免费| 久久精品国产96精品亚洲 | 一区二区三区在线观看免费| 亚洲国产另类久久久精品小说 | 一级中文字幕免费乱码专区 | 亚洲精品美女在线观看播放| 91视频国产免费| 亚洲人成电影在线观看青青|