Webx框架:Spring Schema 和 Spring Ext

webx誕生的原因是當時市面上沒有好用的web框架。現在的Web框架有很多,然後它們背後的思想都是相似的,而且越來越趨同。


Spring Schema

在傳統的spring中,配置bean時需要手動去指定具體的實現類是什麼,參數有哪些。這樣開發者需要記住具體的實現類、參數名稱、含義等,會帶來很大的記憶負擔。爲了解決這個問題,SpringSchema出現了。它的解決辦法是將所有的參數轉換成標籤。標籤是可以通過XML Schema定義的。這樣只需要記憶標籤的名字即可。標籤的名稱一般都很短,因此減輕了開發者的負擔。


在傳統的Spring中,可能一個組件需要像下面這樣配置。它使用了property、map、entry等標籤,這些標籤都不是重點,重點在於name、key、value-ref這些屬性。

<bean id="resourceLoadingService" class="com.alibaba...ResourceLoadingServiceImpl">
  <property name="mappings">
    <map>
      <entry key="/file" value-ref="fileLoader" />
      <entry key="/webroot" value-ref="webappLoader" />
    </map>
  </property>
</bean>


爲了解決這個問題。SprintExt引入了Spring Schema。組件的配置就成了下面這樣。標籤的名稱都是重點。還有一個好處就是,標籤的格式可以在XML Schema中定義,能使IDE更加智能。

<resource-loading id="resourceLoadingService"
xmlns="http://www.alibaba.com/schema/services/resource-loading">
  <resource pattern="/file">
    <file-loader basedir="${user.home}" />
  </resource>
  <resource pattern="/webroot">
    <webapp-loader />
  </resource>
</resource-loading>


SpringExt

SpringExt擴展了Spring Schema,它能讓XML文件提供更多的擴展性。


SpringExt中有幾個重要的概念:

  • 擴展點:相當於標籤的命名空間。
  • 捐獻:相當於命名空間的具體實現。
  • 組件:組件可以被別的模塊擴展,也可以擴展別的模塊。比如ResourceLoadingService就是一個組件,這個在後面還會有介紹。


Webx容器。它完全兼容Spring的容器,因此語法和Spring完全一樣。Webx框架在啓動時自動加載WEB-INF/webx.xml和WEB-INF/webx-*.xml文件。其中webx-*.xml是子容器,它們都繼承了webx.xml。


日誌。日誌的配置需要在web.xml中加入一個listener:

<listener>
  <listener-class>com.alibaba.citrus.logconfig.LogConfiguratorListener</listener-class>
</listener>


頁面驅動。在傳統的開發流程中,視覺設計師設計出模板之後無法直接看到效果,需要等到Action代碼編寫完成才能看到。而頁面驅動的理念中,視覺設計師在做完頁面之後可以直接看到效果,而且可以在頁面中直接使用框架提供的一些工具,比如頁面跳轉,驗證登陸等。webx框架還提供了一系列工具,名爲pull tools,它可以在頁面中被調用,而且可以按需加載。比如表單的工具就是一種 Pull tools,可以用表單工具判斷一個字段是否正確,錯誤消息是什麼。


規則映射。在webx中,URL首先解析成Target,Target再由Pipeline進行解析。Pipeline解析可以得到模板名。模板名可以是Layout,可以是Module。一個Layout中可以包含Control和Screen。Control可以有多個,Screen只能有一個。Control相當於頁面中的一個控件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章