日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Webx示例-PetStore分析1

發布時間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Webx示例-PetStore分析1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 下載源碼

?

2. 啟動容器,加載組件--WebxContextLoaderListener

WebxContextLoaderListener繼承自org.springframework.web.context.ContextLoaderListener。它覆蓋了一個方法:createContextLoader(),該方法返回一個ContextLoader對象,即上下文加載器。方法的實現采用了匿名內部類方式,返回WebxComponentsLoader的匿名子類,該子類覆蓋了一個方法:getDefaultContextClass()。

WebxContextLoaderListener繼承了父類ContextLoaderListener中的方法contextInitialized(),該方法內部調用了被覆蓋過的方法createContextLoader(),并使用該方法返回的WebxComponentsLoader對象調用org.springframework.web.context.ContextLoader的initWebApplicationContext()方法。

WebxComponentsLoader中的initWebApplicationContext方法除了保存servletContext對象,調用了init()之后,調用父類ContextLoader的同名方法。

默認使用WebxComponentsContext類作為實際啟動Spring容器的ApplicationContext。它派生自WebxApplicationContext類。org.springframework.web.context.support.XmlWebApplicationContext的后代。

WebxComponentsLoader.createComponents方法代碼很長,但是做的事情只有一件:創建Webx組件

Webx中的組件是一組相關功能的集合,本質上是一個WebApplicationContext。

組件的來源有兩個:

?自動掃描WEB-INF目錄下的配置文件生成

?webx.xml中指定

將兩種方式獲取到的組件名集合取并集,就是最終將要處理的組件名集合。注意,在webx.xml中指定的組件名,其配置文件的名字也是webx-*.xml的形式,并不能隨意指定。

?自動掃描是可以關掉的,這個時候,只能通過配置的方式來獲取組件

?組件的componentPath屬性只能通過webx.xml設定

自動掃描是這樣工作的:掃描WEB-INF目錄下所有匹配webx-*.xml的文件,其中*所代替的字符串為組件名。例如,WEB-INF下有一個名為webx-home.xml的文件,那么它代表一個名為home的組件。

?

3. 加載其他配置文件

?

4. 配置服務

RequestContexts服務

詳細講解可參考官方指南第7,8章。http://openwebx.org/docs/requestcontexts.html

upload服務

pull服務

pull service就相當于提供工具類,可以將工具定義成java類,而能夠在vm模板中調用

module-loader服務

Module是一段可編程、可執行的邏輯,它由Module接口標識。Module接口只有一個execute方法:

void execute() throws Exception

實現自定義的Module只需實現Module接口并在execute()方法中實現自定的執行邏輯。在調用方,通過Module接口調用execute()方法觸發Module的執行。

ModuleLoaderService是定義、查找Modules的服務。它通過掃描特定的包或者特定類來加載類,并將加載到的類適配為可執行的Module。ModuleLoaderService中的每個Module都有moduleTypemoduleName這兩個用來表示Module的信息。可以根據這兩個信息,通過ModuleLoaderService提供的查找接口從ModuleLoaderService中查找所需的Module。

ModuleLoaderService有兩個重要組件,ModuleFactoryModuleAdapterFactory。前者用于根據特定的條件掃描并加載module (可以是非Java語言編寫);后者則用于將加載到的module轉換成可執行的Module(實現Module接口)。因為ModuleFactory加載的module未必都實現了Module接口;即使實現了Module接口,該接口也只有一個無參數的方法,限制了Module的靈活性。所以,!ModuleAdapterFactory通過適配器的機制將未實現Module接口但滿足一定條件的module轉換為實現了Module接口的Adapter,同時保持原來的處理邏輯不變。

在webx體系中,Module承擔了用戶提交數據的接收、處理;請求的控制與轉發;處理結果的展示等重要功能。Webx缺省定義了三種類型的Module:

  • action:主要用于處理用戶提交的數據,以及請求的控制與轉發;
  • screen:主要用于處理頁面的主體內容;
  • control:主要用于處理頁面的部分內容,特別是可重用的內容。

其中,screen和control可以與模板文件配合共同完成頁面的展示,也可以脫離模板而獨立輸出頁面。

除了action、screen和control,ModuleLoaderService也支持方便的定義其他類型的Module。

ModuleFactory接口根據特定的條件掃描并加載類,webx為該接口提供了兩個實現:ClassModuleFactoryScriptModuleFactory。前者用于加載Java編寫的module,而后者用于加載用動態語言(如groovy)編寫的module。

ModuleAdapterFactory接口用于將加載到的module轉換成可執行的ModuleDataBindingAdapterFactoryActionEventAdapterFactory是該接口的兩個實現。DataBindingAdapterFactory對所有具有名為execute的方法的module(可以不實現Module接口,同時execute方法的參數也可以任意定義)進行適配,生成DataBindingAdapter;而ActionEventAdapterFactory則對類型為“action”的module進行適配,生成ActionEventAdapter。DataBindingAdapter和ActionEventAdapter都實現了Module接口。DataBindingAdapter只代理了原有module的名為execute的public方法,執行時候直接調用該方法;而ActionEventAdapter則代理了所有以do開頭的public方法(例如doAdd()),執行時根據請求參數的值調用相應的方法。

?

<services:module-loader>是根據SpringExt機制定義的專門用于定義ModuleLoaderService的元素,其有兩個屬性:

  • cacheEnabled:是否緩存Module;如果使用緩存,則查找Module時先從緩存中查找,當緩存中不存在時才從ModuleFactory中查找;如果不使用緩存則直接從ModuleFactory中查找。生產中建議開啟Module緩存以提高Module查找性能;
  • includeDefaultAdapters:是否使用webx默認實現的ModuleAdapterFactory,包括:DataBindingAdapterFactory、ActionEventAdapterFactory和Webx2ModuleAdapterFactory,如果將這個屬性的值設為true,則默認會在moduleLoaderService中加載這幾個AdapterFactory而不需要再額外的配置;

<services:module-loader>元素也可以包含子元素,其子元素可以分為兩種類型:配置ModuleFactory的子元素和配置ModuleAdapterFactory的子元素。配置ModuleFactory的子元素有:

  • <ml-factories:class-modules>:配置查找classes生成Module的ClassModuleFactory;
  • <ml-factories:script-modules>:配置查找script生成Module的ScriptModuleFactory;
  • <ml-factories:factory >:ClassModuleFactory和ScriptModuleFactory是webx提供的ModuleFactory實現,也可以擴展自定義的ModuleFactory,然后采用<ml-factories:factory >元素配置,其屬性與spring提供的<bean>元素相同;

配置ModuleAdapterFactory的子元素也有多個:

  • <ml-adapters:data-binding-adapter/>:配置DataBindingAdapterFactory;
  • <ml-adapters:action-event-adapter/>:配置ActionEventAdapterFactory;
  • <ml-adapters:adapter>:與ModuleFactory類似,也可以對ModuleAdapterFactory進行擴展實現自定義的ModuleAdapterFactory,<ml-adapters:adapter>用于配置自定義的ModuleAdapterFactory。

當設置<services:module-loader>的includeDefaultAdapters=" true"時,會自動為ModuleLoaderService加載DataBindingAdapterFactory、ActionEventAdapterFactory,所以可以不需要再用<ml-adapters:data-binding-adapter/>和<ml-adapters:action-event-adapter/>另外配置。

?

?

參考資料

http://code.taobao.org/p/webx/wiki/module_load_service/

http://www.atatech.org/articles/55937

轉載于:https://www.cnblogs.com/lddbupt/p/5578371.html

總結

以上是生活随笔為你收集整理的Webx示例-PetStore分析1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕国产一区二区 | 日韩精品久久久久久久 | 婷婷丁香在线 | 无码少妇一区二区 | 久久成人视屏 | 国产做受高潮动漫 | 在线免费看av网站 | 污视频免费在线 | 国产成人久久精品77777综合 | 亚洲图片偷拍区 | 久久夜色精品国产噜噜亚洲av | 欧美成人午夜影院 | 西西4444www大胆无视频 | 国产精品香蕉国产 | 91视频黄色 | 日韩成人一区二区 | 欧美hdxxxx| 国产精品v欧美精品v日韩 | 日本亲与子乱xxx | 老牛av一区二区 | 福利国产片 | 免费成人av在线播放 | 亚洲欧洲天堂 | 1000部多毛熟女毛茸茸 | mm131在线 | 国精产品一品二品国精品69xx | 欧美精品1区2区 | 综合激情久久 | 蜜臀av在线观看 | 欧洲美一区二区三区亚洲 | 特黄老太婆aa毛毛片 | 亚洲性图视频 | 黄色小视频大全 | 香港黄色网址 | 又紧又大又爽精品一区二区 | 一区二区麻豆 | 婷婷激情六月 | 杨幂毛片 | 99精品视频在线看 | 有色影院| 久久亚洲av无码精品色午夜麻豆 | 日本少妇aaa| 欧美黑人猛交 | 3d毛片| 欧美a级免费 | 亚色91 | 成年人免费av | jizz中国少妇高潮出水 | 人人妻人人澡人人爽精品欧美一区 | 日本精品人妻无码免费大全 | av图区| japanese中文字幕 | 国产精品1页 | 久久久久久久久久久电影 | √资源天堂中文在线视频 | 午夜久久久久久久 | 成人77777| h在线免费观看 | 久久久a级片 | 在线精品视频一区 | 欧美大片黄色 | 69国产精品视频免费观看 | 国产老熟女伦老熟妇露脸 | 国产资源网 | 欧美日本韩国一区二区三区 | 一区二区三区四区五区视频 | 天天干网站 | 日韩黄片一区二区三区 | 欧洲影院| 欧美精品在线第一页 | 国产亚洲精 | 色吧综合 | 国产无套在线观看 | 美女100%视频免费观看 | 亚洲第一毛片 | 精品xxx| 少妇特殊按摩高潮惨叫无码 | 在线看片中文字幕 | 亚洲精品乱码久久久久99 | 国产手机在线视频 | 欧美日韩毛片 | 午夜三级福利 | 黄色成人在线免费观看 | av在线色| 中文在线а√在线8 | 在线免费观看国产精品 | 国产日韩精品久久 | 在线成人国产 | 国产亚洲电影 | 天堂av8在线 | 老司机在线看片 | 一本在线免费视频 | 国内精品人妻无码久久久影院蜜桃 | 三级麻豆 | 亚洲三级黄色 | 东北少妇不带套对白 | 肮脏的交易在线观看 | 国产精品 欧美 日韩 | 91视频综合网 |