使用tapestry-prop提高Tapestry運行效率

來源:互聯網
上載者:User

tapestry-prop介紹
    它是一個為Tapestry4.0編寫的擴充包,提供了一個新的綁定首碼"prop:"。這個首碼用於擷取頁面或組件的屬性。
    看上去和Tapestry內建的"ognl:"首碼沒有什麼區別,但是低層實際擷取資料的方法和OGNL是完全不同的。它採用了位元組碼產生的方式去擷取使用者類中的那些可以通過名字擷取的屬性。
    "prop:"首碼只能擷取簡單屬性或者由路徑代表的屬性(一串用點號隔開的屬性名稱)。比方說 "prop:userName" 或 "prop:identity.admin"。
    最後一個屬性如果是唯讀或唯寫的話,在分別對它們更新或讀取的時候就會拋出一個適當的異常。
    Tapestry5將預設使用更成熟的"prop:"首碼(OGNL還會保留,但是到寫這篇文章為止還沒有完成)。
使用
    所需做的只是將tapestry-prop包放在類路徑下就可以了(典型的,在WAR包的WEB-INF/lib包下)。Maven會為你作好剩下的一切,你要做的僅僅是把tapestry-prop作為一個項目的一個依賴包。
    你可以在HTML模板裡面使用"prop:"首碼:
<span jwcid="@Insert" value="prop:userName">Joe User</span>
   或者,你也可以在頁面或組件的定義檔案裡面使用:
<component id="userName" type="Insert">
  <binding name="value" value="prop:userName"/>
</component>
這個包使用JDK1.3編譯,並與其相容。
與OGNL比較
    "prop:"首碼比"ognl:"高效,但是不像它那樣靈活。
    優勢是,使用它對效能將會有極大的提升。不僅沒有了反射的開銷,而且也不會有OGNL操作時需要的臨時對象的建立。
    缺點是,OGNL總能正確的計算屬性的類型。"prop:"首碼使用的是申明的類型,就想編譯時間被編譯過的Java代碼一樣。如果一個頁面屬性使用介面定義的,那麼你不能用這個介面的實現來擷取屬性(除非那些方法也是用介面定義的)。
    OGNL還包含了豐富的類型轉化系統和更豐富的文法。正是OGNL的這種簡單和高效(註:不是指運行效率)使它被Tapestry選用而不依賴於代碼產生的原因。
    在效能方面,有了一個顯著的提高:

    顯示了在處理簡單情況(簡單屬性)和複雜情況(屬性路徑)下get操作迴圈次數。數字越高表面效能越好(在2秒內的迴圈次數)。
    使用純粹的java代碼和使用"prop:"首碼效率幾乎是並駕齊驅的,ONGL就有了明顯的差距。更糟的是,每一個包含在ONGL運算式裡的條件都會有巨大的影響(相反,另外兩種情況下,額外的條件幾乎沒有影響)。考慮到這些因素,在成百上千的Tapestry頁面裡面差距就非常明顯了。
預設使用"prop:"綁定
    使用Tapestry的配置屬性org.apache.tapestry.default-binding-prefix可以使頁面或組件的預設綁定規則使用"prop:"。比如:
<page-specification>
    <meta key="org.apache.tapestry.default-binding-prefix" value="prop"/>
    . . .
</page-specification>
意思是在所有頁面定義的值如果沒有使用明確的首碼則會預設的使用"prop:"而不是"ognl:"。如果把<meta>標籤一道應用的定義檔案(application specification),則會影響到應用中所有的頁面和組件。
下載
    beta版的包現在可以在Maven 2 庫裡下載到http://howardlewisship.com/repository/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.