框架模块化开发规范_第1页
框架模块化开发规范_第2页
框架模块化开发规范_第3页
框架模块化开发规范_第4页
框架模块化开发规范_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

框架模块化开发标准2015年8月更新历史编写人日期版本号变更内容萧海生2015-08-310.01初次编写TOC\o"1-2"\h\u1.前言41.1模块化要做什么?41.2模块化的技术支持42.模块化工程目录结构82.1目录结构结构说明93.MAINFEST.MF文件配置104.pom.xml文件配置115.依赖与引用126.参数配置127.数据库检查138.核心模块138.1核心模块作用138.2启动检查148.3工具类148.4日志支持149.附录159.1MANIFEST.MF文件编辑问题15前言模块化要做什么?模块化的目标是将WEB应用的所有内容打到一个jar包中〔包括类文件、页面文件、JS文件、CSS文件以及配置文件等〕。每个模块都以一个jar包的形式存在,这样模块的粒度就可以随意掌握,以利于框架的管理和版本升级。模块化的技术支持Servlet3.0模块化支持Servlet从3.0开始支持各Web应用的模块化,也就是说从Servlet3.0开始,我们可以把各Web应用单独拿出来进行开发,之后把它们打成对应的jar包放到主工程中就可以了。〔包括各种资源文件以及web.xml的配置都可以打包到jar中〕Web模块打成的jar包的内容的文件结构要求是这个样子的:|--META-INF|--META-INF|

|--web-fragment.xml|

|--resources|

|

|--jsp、图片等,相当于web的根目录|--class文件和类路径下的文件其中web-fragment.xml文件是必须要的。上述目录结构就相当于在我们的类路径下有一个META-INF目录,该目录下有web-fragment.xml文件及包含jsp、图片等资源的resources目录。web-fragment.xmlweb-fragment.xml文件的作用与Web应用下的web.xml文件的作用是相似的,在web.xml文件可以配置的信息都可以在web-fragment.xml文件中进行配置。此外,它们的文档结构也非常的相似。所不同的是web-fragment.xml文件的根元素是web-fragment,所使用的schema也是web-fragment相应的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>元素来指定当前模块的名称,用<ordering>元素来指定当前模块相对的加载顺序。<ordering>元素下面可以指定<before>或<after>元素,而<before>和<after>元素下又可以指定<name>和<others>元素。指定ordering的例如如下。在其他模块之前加载<ordering><!--

在其它模块之前加载

--><before><others/></before></ordering>在指定模块之后加载<ordering><!--

在指定模块之后加载

--><after><name>模块名称</name></after></ordering>除了可以在web-fragment.xml文件里面通过<ordering>元素定义当前模块的加载顺序外,我们还可以在web.xml文件中通过<absolute-ordering>元素指定各模块的加载顺序。而且web.xml文件中指定的加载顺序比web-fragment.xml文件中指定的加载顺序具有更高的优先级。如:<absolute-ordering><name>module1</name><name>module2</name><name>module3</name><others/></absolute-ordering>更多内容请参考Servlet3.0标准。模块化例如接下来我们来展示一个创立web模块的例子。假设我们要创立一个叫做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);

}

}

接着我们在类路径下创立一个META-INF文件夹,在该文件夹下创立一个resources目录,在resources目录下创立一个module1.jsp文件。接着在META-INF目录下创立一个web-fragment.xml文件,其内容如下:<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应用中,在其它Web应用中使用了。放到其它Web应用中后,我们通过访问/servlet/module1就可以访问到我们module1模块中定义的Module1Servlet了。module1模块的目录结构如下:MavenMaven是个优秀的工程管理及构建工具。由于模块化开发的最终产出物为jar包,使用maven进行工程管理可以很方便的将工程打包成jar包。在进行模块化开发的时候模块间的依赖关系是非常复杂的,而maven的工程依赖管理功能是非常强大的,可以很好的帮助我们管理模块间的依赖关系。综合以上原因,在进行模块化开发时采用maven作为工程管理工具。运行环境要求软件版本说明操作系统Windows/linuxJdk>=1.6应用效劳器Tomcat>=7.0支持Servlet3.0标准的应用效劳器。Weblogic>=12c模块化工程目录结构模块化开发采用maven作为工程管理工具,模块化工程必须遵循如下目录结构。目录说明|/工程根目录|--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相当于Web应用目录,存放jsp、css、图片、js等资源文件||--test/src/test工程测试根目录|||--java/src/test/java测试代码目录|||--resources/src/test/resources测试资源所需目录|--target/target工程输出根目录目录结构如下列图所示:目录结构结构说明/src/main/java该目录为java源代码目录。模块的java包路径必须以模块简称开头。如demo模块类的包路径为:com.hnisi.demo.***/src/main/resources/config该目录为配置文件目录。为了防止模块间配置文件的冲突,配置文件必须存放在该目录下对应模块的目录内。如demo模块的配置文件存放路径为:/src/main/resources/config/demo/src/main/resources/spring该目录为spring配置文件目录。为了防止模块间文件的冲突,配置文件必须存放在该目录下对应模块的目录内。如demo模块的spring配置文件存放路径为:/src/main/resources/spring/demo/src/main/resources/META-INF/resources根据Servlet3.0标准,该文件夹相当于web应用的根目录。主要用于存放web应用资源,如jsp、html、css、js、image等资源文件。MAINFEST.MF文件配置MANIFEST.MF文件位于/src/main/resources/META-INF目录下。打包成jar模块包时该文件位于jar包的META-INF目录下。该文件为jar包的描述文件。为了区别普通jar包与模块化jar包的区别,需要在MANIFEST.MF文件中参加如下配置信息,其中红色局部的属性是必须的〔MANIFEST.MF文件的编辑问题请参考附录9.1章节〕。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相关文档。为了将MANIFEST.MF文件打包进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文件、图片文件等。由此可见模块间的依赖是非常复杂的,除了最常见的java类依赖外还包含了接口、效劳、资源文件等之间的相互依赖。这里我们只对模块间的依赖关系进行管理,开发过程中通过maven进行依赖管理。运行过程中通过MANIFEST.MF文件的Require-Bundle配置属性进行定义,然后由核心模块进行启动时检查。配置如下。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参数配置模块的一些固定的参数可配置到配置文件中。配置文件位于/src/main/resources/config/目录下。具体配置文件及说明如下。配置文件名说明/config/模块简称/perties配置开发、测试和生产环境都相同的参数/config/模块简称/perties配置开发环境需要的参数/config/模块简称/perties配置测试环境需要的参数/config/模块简称/perties配置生产环境需要的参数/config/模块简称/perties配置log4j日志的参数WEB应用同样需要包含以上这些配置文件,WEB应用的配置文件直接存放到config目录下。WEB应用的perties配置文件必须包要配置SYSTEM.TYPE参数。核心模块通过SYSTEM.TYPE参数加载相应的配置文件。SYSTEM.TYPE参数说明如下。参数配置说明SYSTEM.TYPE=dev开发模式,加载perties文件SYSTEM.TYPE=test测试模式,加载perties文件SYSTEM.TYPE=product生产模式,加载perties文件数据库检查核心模块核心模块作用核心模块的主要作用如下:进行模块依赖检查进行数据库版本检查提供工具类支持提供日志支持第三方框架依赖配置〔开发阶段,由maven配置〕启动检查启动检查包括模块依赖检查和数据库检查。模块依赖检查模块依赖检查主要是在系统启动的过程中,通过M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论