ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:74KB ,
资源ID:5999054      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5999054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(框架模块化开发规范.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

框架模块化开发规范.docx

1、框架模块化开发规范框架模块化开发规范2015年8月更新历史编写人日期版本号变更内容萧海生2015-08-310.01初次编写1. 前言 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.1 MANIFEST.MF文件编辑问题 151. 前言1.1 模块化要做什么?模

2、块化的目标是将WEB应用的所有内容打到一个jar包中(包括类文件、页面文件、JS文件、CSS文件以及配置文件等)。每个模块都以一个jar包的形式存在,这样模块的粒度就可以随意掌握,以利于框架的管理和版本升级。1.2 模块化的技术支持1.2.1 Servlet3.0模块化支持Servlet从3.0开始支持各Web应用的模块化,也就是说从Servlet3.0开始,我们可以把各Web应用单独拿出来进行开发,之后把它们打成对应的jar包放到主项目中就可以了。(包括各种资源文件以及web.xml的配置都可以打包到jar中)Web模块打成的jar包的内容的文件结构要求是这个样子的:|-META-INF|

3、|-web-fragment.xml| |-resources| | |-jsp、图片等,相当于web的根目录|-class文件和类路径下的文件其中web-fragment.xml文件是必须要的。上述目录结构就相当于在我们的类路径下有一个META-INF目录,该目录下有web-fragment.xml文件及包含jsp、图片等资源的resources目录。1.2.1.1 web-fragment.xmlweb-fragment.xml文件的作用与Web应用下的web.xml文件的作用是相似的,在web.xml文件可以配置的信息都可以在web-fragment.xml文件中进行配置。此外,它们的文

4、档结构也非常的相似。所不同的是web-fragment.xml文件的根元素是web-fragment,所使用的schema也是web-fragment相应的schema,配置如下:1. web-fragmentversion=3.0xmlns=2. xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance3. xsi:schemaLocation=4. 5. 在web-fragment.xml文件中我们可以通过元素来指定当前模块的名称,用元素来指定当前模块相对的加载顺序。元素下面可以指定或元素,而和元素下又可以指定和元素。指定ordering的示例如

5、下。 在其他模块之前加载1. 2. 3. 4. 5. 6. 在指定模块之后加载1. 2. 3. 4. 模块名称5. 6. 除了可以在web-fragment.xml文件里面通过元素定义当前模块的加载顺序外,我们还可以在web.xml文件中通过元素指定各模块的加载顺序。而且web.xml文件中指定的加载顺序比web-fragment.xml文件中指定的加载顺序具有更高的优先级。如:1. 2. module13. module24. module35. 6. 更多内容请参考Servlet3.0规范。1.2.1.2 模块化示例接下来我们来展示一个创建web模块的例子。假设我们要创建一个叫做modul

6、e1的模块,其中含有一个Module1Servlet,其代码如下所示:1. publicclassModule1ServletextendsHttpServlet 2. 3. privatestaticfinallongserialVersionUID=1L; 4. 5. Override6. protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp) 7. throwsServletException,IOException 8. this.doPost(req,resp); 9. 10. 11. Override12.

7、 protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp) 13. throwsServletException,IOException 14. req.getRequestDispatcher(/module1.jsp).forward(req,resp); 15. 16. 17. 接着我们在类路径下创建一个META-INF文件夹,在该文件夹下创建一个resources目录,在resources目录下创建一个module1.jsp文件。接着在META-INF目录下创建一个web-fragment.xml文件,其内容如

8、下:1. web-fragmentversion=3.0xmlns=2. xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance3. xsi:schemaLocation=4. 5. 6. module17. 8. 9. 10. 11. 12. 13. 14. 15. 16. module1Servlet17. com.xxx.Module1Servlet18. 19. 20. 21. module1Servlet22. /servlet/module123. 24. 25. 之后我们把该项目打成一个jar包就可以把它作为一个jar加到其它Web应

9、用中,在其它Web应用中使用了。放到其它Web应用中后,我们通过访问/servlet/module1就可以访问到我们module1模块中定义的Module1Servlet了。module1模块的目录结构如下:1.2.2 MavenMaven是个优秀的项目管理及构建工具。由于模块化开发的最终产出物为jar包,使用maven进行项目管理可以很方便的将项目打包成jar包。在进行模块化开发的时候模块间的依赖关系是非常复杂的,而maven的项目依赖管理功能是非常强大的,可以很好的帮助我们管理模块间的依赖关系。综合以上原因,在进行模块化开发时采用maven作为项目管理工具。2. 运行环境要求软件版本说明操

10、作系统Windows/linuxJdk=1.6应用服务器Tomcat=7.0支持Servlet3.0规范的应用服务器。 Weblogic=12c3. 模块化项目目录结构模块化开发采用maven作为项目管理工具,模块化项目必须遵循如下目录结构。目录说明|/项目根目录|-pom.xml/pom.xmlMaven 配置文件|-src/src| |-main/main项目主体根目录| | |-java/src/main/java源代码目录| | |-resources/src/main/resources所需资源目录| | | |-config/src/main/resources/config配置文

11、件根目录| | | |-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/res

12、ources测试资源所需目录|-target/target项目输出根目录目录结构如下图所示:3.1 目录结构结构说明3.1.1 /src/main/java该目录为java源代码目录。模块的java包路径必须以模块简称开头。如demo模块类的包路径为:com.hnisi.demo.*3.1.2 /src/main/resources/config该目录为配置文件目录。为了防止模块间配置文件的冲突,配置文件必须存放在该目录下对应模块的目录内。如demo模块的配置文件存放路径为:/src/main/resources/config/demo3.1.3 /src/main/resources/spr

13、ing该目录为spring配置文件目录。为了防止模块间文件的冲突,配置文件必须存放在该目录下对应模块的目录内。如demo模块的spring配置文件存放路径为:/src/main/resources/spring/demo3.1.4 /src/main/resources/META-INF/resources根据Servlet3.0规范,该文件夹相当于web应用的根目录。主要用于存放web应用资源,如jsp、html、css、js、image等资源文件。4. MAINFEST.MF文件配置MANIFEST.MF文件位于/src/main/resources/META-INF目录下。打包成jar模

14、块包时该文件位于jar包的META-INF目录下。该文件为jar包的描述文件。为了区别普通jar包与模块化jar包的区别,需要在MANIFEST.MF文件中加入如下配置信息,其中红色部分的属性是必须的(MANIFEST.MF文件的编辑问题请参考附录9.1章节)。Manifest-Version: 1.0Bundle-Type: 模块类型,必须为:HnisiBundle-Name: 模块名,与pom.xml中的artifactId一致Bundle-Version: 模块版本号,与pom.xml中的version一致Bundle-Description: 模块描述Bundle-Version-Co

15、mpatible: 模块兼容的最低版本号Require-Bundle: 依赖的模块,写法为:模块1;模块1版本号,模块2;模块2版本号Require-Table: S_USER,S_FRAMEWORK_MENURequire-View: V_TODO_LIST例子:Manifest-Version: 1.0Bundle-Type: HnisiBundle-Name: Hnisi-Fw-DemoBundle-Version: 1.0.0.0Bundle-Description: 测试模块Bundle-Version-Compatible: 0.0.0.1Require-Bundle: Hnisi

16、-Fw-Code;1.0.0.0,Hnisi-Fw-Dao;1.0.0.0Require-Table: S_USER,S_FRAMEWORK_MENURequire-View: V_TODO_LIST5. pom.xml文件配置pom.xml文件为maven配置文件,具体配置可参考maven相关文档。为了将MANIFEST.MF文件打包进jar包中,需要在pom.xml文件中加入如下配置。 org.apache.maven.plugins maven-jar-plugin 2.6 false srcmainresourcesMETA-INFMANIFEST.MF 6. 依赖与引用一个模块除了包

17、含java类之外同时还包含了各种接口、spring bean、service服务以及页面文件、JS文件、CSS文件、图片文件等。由此可见模块间的依赖是非常复杂的,除了最常见的java类依赖外还包含了接口、服务、资源文件等之间的相互依赖。这里我们只对模块间的依赖关系进行管理,开发过程中通过maven进行依赖管理。运行过程中通过MANIFEST.MF文件的Require-Bundle配置属性进行定义,然后由核心模块进行启动时检查。配置如下。Manifest-Version: 1.0Bundle-Type: 模块类型,必须为:HnisiBundle-Name: 模块名,与pom.xml中的artif

18、actId一致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.0Bundle-Type: HnisiBundle-Name: Hnisi-Fw-DemoBundle-Version

19、: 1.0.0.0Bundle-Description: 测试模块Bundle-Version-Compatible: 0.0.0.1Require-Bundle: Hnisi-Fw-Code;1.0.0.0,Hnisi-Fw-Dao;1.0.0.0Require-Table: S_USER,S_FRAMEWORK_MENURequire-View: V_TODO_LIST7. 参数配置模块的一些固定的参数可配置到配置文件中。配置文件位于/src/main/resources/config/目录下。具体配置文件及说明如下。配置文件名说明/config/模块简称/config.propertie

20、s配置开发、测试和生产环境都相同的参数/config/模块简称/config-dev.properties配置开发环境需要的参数/config/模块简称/config-test.properties配置测试环境需要的参数/config/模块简称/config-product.properties配置生产环境需要的参数/config/模块简称/log4j.properties配置log4j日志的参数WEB应用同样需要包含以上这些配置文件,WEB应用的配置文件直接存放到config目录下。WEB应用的config.properties配置文件必须包要配置SYSTEM.TYPE参数。核心模块通过SY

21、STEM.TYPE参数加载相应的配置文件。SYSTEM.TYPE参数说明如下。参数配置说明SYSTEM.TYPE=dev开发模式,加载config-dev.properties文件SYSTEM.TYPE=test测试模式,加载config-test.properties文件SYSTEM.TYPE= product生产模式,加载config-product.properties文件8. 数据库检查9. 核心模块9.1 核心模块作用核心模块的主要作用如下: 进行模块依赖检查 进行数据库版本检查 提供工具类支持 提供日志支持 第三方框架依赖配置(开发阶段,由maven配置)9.2 启动检查启动检查包

22、括模块依赖检查和数据库检查。9.2.1 模块依赖检查模块依赖检查主要是在系统启动的过程中,通过MANIFEST.MF文件配置的依赖关系检查启动模块依赖的其他模块是否存在。如果不存在则进行提示询问是否继续启动应用。9.2.2 数据库检查核心模块在系统启动的过程中进行提供数据库的相关检查支持。具体请参考第7章数据库版本检查。9.3 工具类核心模块为其他模块提供常用的工具类。方便其他模块的调用。9.4 日志支持核对模块为其他模块提供日志支持,主要是对log4j的支持。由于不同模块可能存在不同的日志输出需求,因此核心模块支持每个模块都可以有自己的日志配置文件。每个模块的日志配置文件存放路径为:/src

23、/main/resources /config/模块简称/log4j.properties10. 附录10.1 MANIFEST.MF文件编辑问题MANIFEST.MF文件有着严格的格式要求,甚至一个空格都会引起错误。因此在编写MANIFEST.MF文件时需要严格遵循如下格式说明。10.1.1 MANIFEST.MF格式说明1. 文件中的内容以键值对的形式出现,键值对之间采用冒号+空格进行分隔(注意:冒号后的空格必须有,否则格式有错误)2. 文件每行最多72个字符,可以分多行写,但是在行的末尾必须加上空格符作为续行符(注意:末尾的续行符不能少)3. 文件的最后必须要空两行,并且这两行都必须顶格

24、4. 通常指定Class-Path时会采用每一行一个JAR包的方法,因为每一行的长度有限制,当JAR较多时容易超过10.1.2 MANIFEST.MF示例Manifest-Version: 1.0Bundle-Type: HnisiBundle-Name: Hnisi-Fw-DemoBundle-Version: 1.0.0.0Bundle-Description: 测试模块Bundle-Version-Compatible: 0.0.0.1Require-Bundle: Hnisi-Fw-Code;1.0.0.0,Hnisi-Fw-Dao;1.0.0.0Require-Table: S_USER,S_FRAMEWORK_MENURequire-View: V_TODO_LIST

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1