码迷,mamicode.com
首页 > 其他好文 > 详细

(一)公共组件之骨架工程

时间:2015-08-31 17:41:52      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

前言

公司为统一应用程序开发环境,简化开发管理成本,提高开发质量,可以考虑开发统一的框架和工具。骨架工程基于MAVEN项目管理,提供了搭建项目必要使用的几个骨架组件。在这些骨架组件中,基本的依赖和基本设置都在模板中做好,无需各项目重复工作,比如集成了统一开发的数据库操作组件、redis操作等基础组件。项目开发组在这个框架的基础上,根据自己的实际需要增加或者裁减组件的配置并编写自己的应用,这样既能统一项目设置和架构,又能大量节省开发人员搭建框架的时间。

1.系统框架结构简介

我采用的Framework是典型的2层架构,表现层和后台逻辑分开,框架做到开发和发布独立。整个系统框架中的项目,采用maven进行管理。框架结构图如下所示:

技术分享

下面对该框架的构成及其技术应用,进行简要的说明:

1.1数据层

我们支持的数据访问技术是cnf-dal,关于该组件的简单应用介绍可参考:公共组件之cnf-dal

1.  基于JDBC Template实现

2.  支持多数据源

3.  支持数据缓存

基于Jedis的数据缓存支持。

1.2逻辑层

1. 普通类实现

2. Spring framework IoC容器管理

3. 支持使用Spring的自动注入

注意:自动注入的变量申请为default作用域(也就是没有作用域),不要申请为private,因为这样注入效能低。

1.3接口

1. 接口和实现分开成独立的两个jar发布,使表现层及外系统仅直接依赖接口工程,从而轻松支持各层次分工开发。

2. 系统内部的接口既可以是本地调用,也可以是hessian或是webservice的远程调用,接口对表现层透明,也就是说表现层完全不用关心接口后面是本地调用还是远程调用。发布时也可以根据实际情况改变策略,而不需要改变代码。比如,原本是本地调用的,现在因系统扩容需要,可以改变成远程调用。

1.4表现层

1. 支持freemarkerjsp页面。

2. 基于Spring-WebMVC

3. jQuery jQuery-ui javascript 类库。

2.项目搭建

框架开发完成后会发布到公司的maven构件库中,各项目在开始项目时,用maven命令即可产生出相应的项目框架。

下面是发布到maven构件库中的骨架工程列表:

骨架工程名称

用途

备注

cnf-archetype-pom

Maven管理项目

必选

cnf-archetype-intf

接口项目

必选

cnf-archetype-service

业务逻辑、数据访问实现项目

必选

cnf-archetype-web

外部web工程(前台)

可选

cnf-archetype-admin

内部web工程(后台)

可选

cnf-archetype-admin-uaa

内部web工程(后台)-- 包含uaa组件(统一权限组件

可选

注:关于如何创建自定义的模板,可参考我的博客文章:http://my.oschina.net/wangrikui/blog/498807

2.1搭建工程

首先需要为cnf-sample项目创建一个新的workspace,假设现已经新建一个工作目录,如:d:\workspaces\cnf-sample。接下来即在该目录下生成自己的项目工程(此处以使用命令行生成pom项目进行举例说明,其他几个项目同理)

通过该方式,首先需要进入到生成项目的所在目录下,然后根据项目需要分别进行如下项目的新建操作(其中sample表示自己的项目名称):

·         生成pom项目

mvn  archetype:generate -DarchetypeGroupId=com.wangtl.framework -DarchetypeArtifactId=cnf-archetype-pom -DarchetypeVersion=1.0.0 -DgroupId=com.wangtl.sample -DartifactId=cnf-sample       -Dversion=0.0.1

生成项目(下同)

为了加速查找骨架,可以加一个参数:

-DarchetypeRepository=[远程maven仓库的地址]

rename cnf-sample cnf-sample-pom

更改项目目录名

提示:1.0.0是骨架构件当前的版本,

·         生成intf项目

mvn  archetype:generate -DarchetypeGroupId=com.wangtl.framework -DarchetypeArtifactId=cnf-archetype-intf -DarchetypeVersion=1.0.0 -DgroupId=com.wangtl.sample -DartifactId=cnf-sample       -Dversion=0.0.1

生成项目(下同)

为了加速查找骨架,可以加一个参数:

-DarchetypeRepository=[远程maven仓库的地址]

rename cnf-sample cnf-sample-intf

更改项目目录名

以此类推,生成其他几个目标项目。

2.2各子项目介绍

2.2.1    POM项目:cnf-archetype-pom

1.该项目的pom.xml文件中添加了对父pom的继承,父pom中定义了一般项目会用到的jar包依赖,作为这些jar包版本管理工具。其依赖定义如下:

         <parent>

               <groupId>com.wangtl.framework</groupId>

               <artifactId>cnf-parent</artifactId> 

               <version>1.0.0</version>  

        </parent>

       注:groupIdartifactId只是给出的虚拟名字,真是项目中换成自己的groupIdartifactId,下同。

       2. 同时该项目的pom.xml文件中可定义模块,实现对其他子项目的统筹管理,其定义格式如下:

       <modules>

              <module>../ cnf-sample -intf</module>

              <module>../ cnf-sample -service</module>

              <module>../ cnf-sample -web</module>

             <module>../ cnf-sample -admin</module>

       </modules>

       3. 此外该pom文件中还能定义一个项目的基本信息,包括开发者、项目信息

2.2.2接口项目:cnf-archetype-intf

      该项目专门用于存放接口代码。接口代码文件包括业务接口和entity(或是DTO),都是纯接口和数据结构,一般没有测试代码。

2.2.3实现项目:cnf-archetype-service

     该项目用于存放逻辑层和数据层实现的代码。该项目的配置文件一共分为四大类,分别为spring配置文件、日志配置文件、SQL配置文件、properties配置文件,该项目中的配置文件清单说明如下:

1.properties配置文件:该文件用来定义一些变量值,在项目运行的时候,其中的变量值会被用来替换其他配置文件中对其变量的引用。

2.Spring的配置文件一共分以下几个:

a. spring -res.xml:各种资源(如数据源,MQ工厂等)设置及逻辑层变量。

b. spring -da.xml:数据访问层的设置。

c. spring -impl.xml:逻辑实现Bean都在这里。

3.SQL配置文件:在/conf/sqlMap/目录下的配置文件,用于数据层组件的应用配置文件。

4.日志配置文件:该文件用于对项目的日志进行配置。

2.2.4展示层项目:cnf-archetype-webcnf-archetype-admincnf-archetype-admin-uaa

     该项目专门用于存放逻辑处理代码、页面及相应的静态资源文件。

 

(一)公共组件之骨架工程

标签:

原文地址:http://my.oschina.net/wangrikui/blog/499573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!