国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts源碼的切片學習之Struts的初始化

2019-11-18 15:33:05
字體:
來源:轉載
供稿:網友

  Author    :    zhyiwww
E-Mail    :    zhyiwww@163.com
Date        :    2007-1-10
轉載請注明出處 www.javaResearch.org
(copyright by @ zhangyi)

     假如你的Web系統使用了Struts系統,那么此系統在啟動的時候就會對此框架進行初始化。作為一個可以擴展的系統來說,它就會考慮其擴展性,和用戶自定義后的配置的初始化。在web.xml文件中,也就是web的配置文件中,我們可以知道,在系統啟動的時候,就會初始化此Servlet,其實,Struts的初始化也就是在此實現的。
那么在那里實現框架的初始化呢?
Servlet在啟動的時候就會執行一個叫init()的方法,當然是自動執行。所以,Struts的初始化實現就是在這里實現的。
那么,
Struts的初始化到底初始化了那些東西呢?
要知道這個問題,我們就要大致的知道,Struts系統的幾個模塊:
[1]    Struts框架內部資源模塊
[2]    用戶擴展的配置模塊
[3]    資源文件配置模塊
[4]    數據源配置模塊
[5]    PlugIn配置模塊
這幾個部分在init()的里面是按照順序初始化的。

    在初始化的過程中,struts并不是簡單的’來順序初始化,而是使用一定的模式和思想,包括功能的封裝。
其中內部資源文件和用戶的擴展的初始化是獨立完成的。而其他的三個模塊并不是這樣的。這三個模塊的初始化是由一個模塊來統一治理的,這個模塊就叫配置模塊。在Struts里面就是ModuleConfig.
所以假如要初始化上面的三個模塊就先要初始化配置模塊。
現在你可能要問,配置模塊如何初始化?
    配置模塊的初始化也不是直接 new ModuleConfig()就可以了,他的實現也是通過工廠模式來實現的。
所以,要先初始化一個配置工廠才能實現此實例化。
配置模塊的工廠是ModuleConfigFactory,這是一個抽象類。其createFactory()方法可以實現一個工廠的實例。
在這還有一個挺非凡的地方,在工廠初始化的時候,定義了工廠類的名字:
    PRotected static String factoryClass =
        "org.apache.struts.config.impl.DefaultModuleConfigFactory";
,所以就可以自己去實現實例化,這樣就有了很大的擴展性,為什么呢?因為我們可以根據需要去修改它,那么他就去實現了我們自己的類的實例。
其實這也就是struts的配置工廠可以自己實現的原因。
補充說明一點:
前面提到的擴展初始化就是指的此擴展。至于其他的擴展,我們以后再說。
 現在,我們已經得到了一個配置的工廠實例了,那么通過此工廠我們可以生產出來一個配置了。
也就是我們得到一個ModuleConfig的實例了。
ModuleConfig config = factoryObject.createModuleConfig(prefix);
這個方法就可以實現了。
不過,你應該知道上面的工廠是一個抽象方法,而其抽象類不時別的方法,正是此方法,那么此方法到底是誰具體實現了呢?
我們上面說了,其實工廠實例化化的時候,其實創建了一個
org.apache.struts.config.impl.DefaultModuleConfigFactory
的對象,這個類實現了此方法?如何實現的呢?
    public ModuleConfig createModuleConfig(String prefix) {
        return new ModuleConfigImpl(prefix);
}
他實例化了一個ModuleConfigImpl,此類正是接口ModuleConfig的實現類。

    到此也許你也明白一些其中的邏輯,我覺得這是一個很好的實現。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武宣县| 增城市| 上饶县| 巴里| 东方市| 鄄城县| 金平| 安徽省| 香格里拉县| 都兰县| 舒兰市| 阳谷县| 金川县| 彭州市| 项城市| 肇州县| 屏边| 绵竹市| 富平县| 清流县| 探索| 昌邑市| 新和县| 黎城县| 民权县| 韩城市| 工布江达县| 余庆县| 天全县| 莱芜市| 铅山县| 霍林郭勒市| 苗栗县| 正安县| 望江县| 黔东| 通辽市| 涡阳县| 宝山区| 惠安县| 乌兰浩特市|