框架模塊化開發(fā)規(guī)范_第1頁
框架模塊化開發(fā)規(guī)范_第2頁
框架模塊化開發(fā)規(guī)范_第3頁
框架模塊化開發(fā)規(guī)范_第4頁
框架模塊化開發(fā)規(guī)范_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

框架模塊化開發(fā)標(biāo)準(zhǔn)2015年8月更新歷史編寫人日期版本號變更內(nèi)容蕭海生2015-08-310.01初次編寫TOC\o"1-2"\h\u1.前言41.1模塊化要做什么?41.2模塊化的技術(shù)支持42.模塊化工程目錄結(jié)構(gòu)82.1目錄結(jié)構(gòu)結(jié)構(gòu)說明93.MAINFEST.MF文件配置104.pom.xml文件配置115.依賴與引用126.參數(shù)配置127.數(shù)據(jù)庫檢查138.核心模塊138.1核心模塊作用138.2啟動檢查148.3工具類148.4日志支持149.附錄159.1MANIFEST.MF文件編輯問題15前言模塊化要做什么?模塊化的目標(biāo)是將WEB應(yīng)用的所有內(nèi)容打到一個jar包中〔包括類文件、頁面文件、JS文件、CSS文件以及配置文件等〕。每個模塊都以一個jar包的形式存在,這樣模塊的粒度就可以隨意掌握,以利于框架的管理和版本升級。模塊化的技術(shù)支持Servlet3.0模塊化支持Servlet從3.0開始支持各Web應(yīng)用的模塊化,也就是說從Servlet3.0開始,我們可以把各Web應(yīng)用單獨拿出來進(jìn)行開發(fā),之后把它們打成對應(yīng)的jar包放到主工程中就可以了?!舶ǜ鞣N資源文件以及web.xml的配置都可以打包到j(luò)ar中〕Web模塊打成的jar包的內(nèi)容的文件結(jié)構(gòu)要求是這個樣子的:|--META-INF|--META-INF|

|--web-fragment.xml|

|--resources|

|

|--jsp、圖片等,相當(dāng)于web的根目錄|--class文件和類路徑下的文件其中web-fragment.xml文件是必須要的。上述目錄結(jié)構(gòu)就相當(dāng)于在我們的類路徑下有一個META-INF目錄,該目錄下有web-fragment.xml文件及包含jsp、圖片等資源的resources目錄。web-fragment.xmlweb-fragment.xml文件的作用與Web應(yīng)用下的web.xml文件的作用是相似的,在web.xml文件可以配置的信息都可以在web-fragment.xml文件中進(jìn)行配置。此外,它們的文檔結(jié)構(gòu)也非常的相似。所不同的是web-fragment.xml文件的根元素是web-fragment,所使用的schema也是web-fragment相應(yīng)的schema,配置如下:<web-fragmentversion="3.0"xmlns="://java.sun/xml/ns/javaee"xmlns:xsi=":///2001/XMLSchema-instance"xsi:schemaLocation="://java.sun/xml/ns/javaee

://java.sun/xml/ns/javaee/web-fragment_3_0.xsd"></web-fragment>在web-fragment.xml文件中我們可以通過<name>元素來指定當(dāng)前模塊的名稱,用<ordering>元素來指定當(dāng)前模塊相對的加載順序。<ordering>元素下面可以指定<before>或<after>元素,而<before>和<after>元素下又可以指定<name>和<others>元素。指定ordering的例如如下。在其他模塊之前加載<ordering><!--

在其它模塊之前加載

--><before><others/></before></ordering>在指定模塊之后加載<ordering><!--

在指定模塊之后加載

--><after><name>模塊名稱</name></after></ordering>除了可以在web-fragment.xml文件里面通過<ordering>元素定義當(dāng)前模塊的加載順序外,我們還可以在web.xml文件中通過<absolute-ordering>元素指定各模塊的加載順序。而且web.xml文件中指定的加載順序比web-fragment.xml文件中指定的加載順序具有更高的優(yōu)先級。如:<absolute-ordering><name>module1</name><name>module2</name><name>module3</name><others/></absolute-ordering>更多內(nèi)容請參考Servlet3.0標(biāo)準(zhǔn)。模塊化例如接下來我們來展示一個創(chuàng)立web模塊的例子。假設(shè)我們要創(chuàng)立一個叫做module1的模塊,其中含有一個Module1Servlet,其代碼如下所示:publicclass

Module1Servlet

extends

Servlet

{

privatestaticfinallong

serialVersionUID

=

1L;

@Overrideprotectedvoid

doGet(ServletRequest

req,

ServletResponse

resp)

throws

ServletException,

IOException

{

this.doPost(req,

resp);

}

@Overrideprotectedvoid

doPost(ServletRequest

req,

ServletResponse

resp)

throws

ServletException,

IOException

{

req.getRequestDispatcher("/module1.jsp").forward(req,

resp);

}

}

接著我們在類路徑下創(chuàng)立一個META-INF文件夾,在該文件夾下創(chuàng)立一個resources目錄,在resources目錄下創(chuàng)立一個module1.jsp文件。接著在META-INF目錄下創(chuàng)立一個web-fragment.xml文件,其內(nèi)容如下:<web-fragmentversion="3.0"xmlns="://java.sun/xml/ns/javaee"xmlns:xsi=":///2001/XMLSchema-instance"xsi:schemaLocation="://java.sun/xml/ns/javaee

://java.sun/xml/ns/javaee/web-fragment_3_0.xsd"><!--

指定模塊名稱

--><name>module1</name><!--

加載順序

--><ordering><!--

在其它模塊之前加載

--><before><others/></before></ordering><servlet><servlet-name>module1Servlet</servlet-name><servlet-class></servlet-class></servlet><servlet-mapping><servlet-name>module1Servlet</servlet-name><url-pattern>/servlet/module1</url-pattern></servlet-mapping></web-fragment>之后我們把該工程打成一個jar包就可以把它作為一個jar加到其它Web應(yīng)用中,在其它Web應(yīng)用中使用了。放到其它Web應(yīng)用中后,我們通過訪問/servlet/module1就可以訪問到我們module1模塊中定義的Module1Servlet了。module1模塊的目錄結(jié)構(gòu)如下:MavenMaven是個優(yōu)秀的工程管理及構(gòu)建工具。由于模塊化開發(fā)的最終產(chǎn)出物為jar包,使用maven進(jìn)行工程管理可以很方便的將工程打包成jar包。在進(jìn)行模塊化開發(fā)的時候模塊間的依賴關(guān)系是非常復(fù)雜的,而maven的工程依賴管理功能是非常強(qiáng)大的,可以很好的幫助我們管理模塊間的依賴關(guān)系。綜合以上原因,在進(jìn)行模塊化開發(fā)時采用maven作為工程管理工具。運(yùn)行環(huán)境要求軟件版本說明操作系統(tǒng)Windows/linuxJdk>=1.6應(yīng)用效勞器Tomcat>=7.0支持Servlet3.0標(biāo)準(zhǔn)的應(yīng)用效勞器。Weblogic>=12c模塊化工程目錄結(jié)構(gòu)模塊化開發(fā)采用maven作為工程管理工具,模塊化工程必須遵循如下目錄結(jié)構(gòu)。目錄說明|/工程根目錄|--pom.xml/pom.xmlMaven配置文件|--src/src||--main/main工程主體根目錄|||--java/src/main/java源代碼目錄|||--resources/src/main/resources所需資源目錄||||--config/src/main/resources/config配置文件根目錄||||--spring/src/main/resources/springSpring配置文件根目錄||||--META-INF/src/main/resources/META-INFMANIFEST.MF、web-fragment.xml|||||--resources/src/main/resources/META-INF/resources相當(dāng)于Web應(yīng)用目錄,存放jsp、css、圖片、js等資源文件||--test/src/test工程測試根目錄|||--java/src/test/java測試代碼目錄|||--resources/src/test/resources測試資源所需目錄|--target/target工程輸出根目錄目錄結(jié)構(gòu)如下列圖所示:目錄結(jié)構(gòu)結(jié)構(gòu)說明/src/main/java該目錄為java源代碼目錄。模塊的java包路徑必須以模塊簡稱開頭。如demo模塊類的包路徑為:com.hnisi.demo.***/src/main/resources/config該目錄為配置文件目錄。為了防止模塊間配置文件的沖突,配置文件必須存放在該目錄下對應(yīng)模塊的目錄內(nèi)。如demo模塊的配置文件存放路徑為:/src/main/resources/config/demo/src/main/resources/spring該目錄為spring配置文件目錄。為了防止模塊間文件的沖突,配置文件必須存放在該目錄下對應(yīng)模塊的目錄內(nèi)。如demo模塊的spring配置文件存放路徑為:/src/main/resources/spring/demo/src/main/resources/META-INF/resources根據(jù)Servlet3.0標(biāo)準(zhǔn),該文件夾相當(dāng)于web應(yīng)用的根目錄。主要用于存放web應(yīng)用資源,如jsp、html、css、js、image等資源文件。MAINFEST.MF文件配置MANIFEST.MF文件位于/src/main/resources/META-INF目錄下。打包成jar模塊包時該文件位于jar包的META-INF目錄下。該文件為jar包的描述文件。為了區(qū)別普通jar包與模塊化jar包的區(qū)別,需要在MANIFEST.MF文件中參加如下配置信息,其中紅色局部的屬性是必須的〔MANIFEST.MF文件的編輯問題請參考附錄9.1章節(jié)〕。Manifest-VersionManifest-Version:1.0Bundle-Type:模塊類型,必須為:HnisiBundle-Name:模塊名,與pom.xml中的artifactId一致Bundle-Version:模塊版本號,與pom.xml中的version一致Bundle-Description:模塊描述Bundle-Version-Compatible:模塊兼容的最低版本號Require-Bundle:依賴的模塊,寫法為:模塊1;模塊1版本號,模塊2;模塊2版本號Require-Table:S_USER,S_FRAMEWORK_MENURequire-View:V_TODO_LIST例子:Manifest-VersionManifest-Version:1.0Bundle-Type:HnisiBundle-Name:Hnisi-Fw-DemoBundle-Version:Bundle-Description:測試模塊Bundle-Version-Compatible:Require-Bundle:Require-Table:S_USER,S_FRAMEWORK_MENURequire-View:V_TODO_LISTpom.xml文件配置pom.xml文件為maven配置文件,具體配置可參考maven相關(guān)文檔。為了將MANIFEST.MF文件打包進(jìn)jar包中,需要在pom.xml文件中參加如下配置。<<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <configuration> <archive> <index>false</index> <manifestFile> src\main\resources\META-INF\MANIFEST.MF </manifestFile> </archive> </configuration> </plugin> </plugins> </build>依賴與引用一個模塊除了包含java類之外同時還包含了各種接口、springbean、service效勞以及頁面文件、JS文件、CSS文件、圖片文件等。由此可見模塊間的依賴是非常復(fù)雜的,除了最常見的java類依賴外還包含了接口、效勞、資源文件等之間的相互依賴。這里我們只對模塊間的依賴關(guān)系進(jìn)行管理,開發(fā)過程中通過maven進(jìn)行依賴管理。運(yùn)行過程中通過MANIFEST.MF文件的Require-Bundle配置屬性進(jìn)行定義,然后由核心模塊進(jìn)行啟動時檢查。配置如下。Manifest-Version:1.0Manifest-Version:1.0Bundle-Type:模塊類型,必須為:HnisiBundle-Name:模塊名,與pom.xml中的artifactId一致Bundle-Version:模塊版本號,與pom.xml中的version一致Bundle-Description:模塊描述Bundle-Version-Compatible:模塊兼容的最低版本號Require-Bundle:依賴的模塊,寫法為:模塊1;模塊1版本號,模塊2;模塊2版本號Require-Table:S_USER,S_FRAMEWORK_MENURequire-View:V_TODO_LIST例:Manifest-Version:1.0Manifest-Version:1.0Bundle-Type:HnisiBundle-Name:Hnisi-Fw-DemoBundle-VersionBundle-Description:測試模塊Require-BundleRequire-Table:S_USER,S_FRAMEWORK_MENURequire-View:V_TODO_LIST參數(shù)配置模塊的一些固定的參數(shù)可配置到配置文件中。配置文件位于/src/main/resources/config/目錄下。具體配置文件及說明如下。配置文件名說明/config/模塊簡稱/perties配置開發(fā)、測試和生產(chǎn)環(huán)境都相同的參數(shù)/config/模塊簡稱/perties配置開發(fā)環(huán)境需要的參數(shù)/config/模塊簡稱/perties配置測試環(huán)境需要的參數(shù)/config/模塊簡稱/perties配置生產(chǎn)環(huán)境需要的參數(shù)/config/模塊簡稱/perties配置log4j日志的參數(shù)WEB應(yīng)用同樣需要包含以上這些配置文件,WEB應(yīng)用的配置文件直接存放到config目錄下。WEB應(yīng)用的perties配置文件必須包要配置SYSTEM.TYPE參數(shù)。核心模塊通過SYSTEM.TYPE參數(shù)加載相應(yīng)的配置文件。SYSTEM.TYPE參數(shù)說明如下。參數(shù)配置說明SYSTEM.TYPE=dev開發(fā)模式,加載perties文件SYSTEM.TYPE=test測試模式,加載perties文件SYSTEM.TYPE=product生產(chǎn)模式,加載perties文件數(shù)據(jù)庫檢查核心模塊核心模塊作用核心模塊的主要作用如下:進(jìn)行模塊依賴檢查進(jìn)行數(shù)據(jù)庫版本檢查提供工具類支持提供日志支持第三方框架依賴配置〔開發(fā)階段,由maven配置〕啟動檢查啟動檢查包括模塊依賴檢查和數(shù)據(jù)庫檢查。模塊依賴檢查模塊依賴檢查主要是在系統(tǒng)啟動的過程中,通過M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論