Spring3Mvc开发平台
描述:
由于公司现有开发框架使用过于复杂,机械性质的工作还需要人工来完成,每个对应的控制器及视图控制器都要进行手动配置XML文件,还需要在全局容器中进行依赖注入,而且对于业务层还需要人工手动进行事物处理等复杂和重复性质的工作,开发效率低下,所以Amundsen研发小组搭建了一套当前最主流的开发平台【Spring3MVC开发框架】。
框架结构及开发规则使用说明如下:
一.框架结构主要由以下几部份组成
1.Spring + SpringMvc
解释:最底层核心框架
1.1依赖注入
1.2AOP横向切面技术、ASPECT切面框架
1.3启用Annotation注解及MVC驱动器
2.MyBatis
解释:主要应用数据库持久层操作,并且所有相关SQL全部为XML文件方便管理及维护
3.SpringSecurity :安全认证框架
解释:主要应用于框架的全安性(注:暂时未启用)
3.1用户身份的认证过程
3.2用户的请求进行拦截并分析是否被授权等过程,
3.3会话连接的控制
3.4访问端口及地址转换的控制
4.视图层:支持任何前台交互视图语言
4.1主要交互框架以EXT
5.0为主
4.2Flex Builder4.6 Actionscript3.0 语言,用于特殊模块处理应用
二.框架目录结构说明
1./src/com/fcx/app/
说明:此目录下为Flex管理部份应用所有核心业务(注:非Flex开发人员禁止更改)
2./src/com/longhope/business/
说明:此目录下为公司项目所有模块相关的业务文件,每个文件夹都是功能模块的拼音简写(注:文件夹的结构及目录层级是及菜单结构一置的,这样方便对应管理及维护),并且在有效功能模块对应的文件夹下必需要创建“action”、“mapper”、“model”、“service”、”service/impl”等如下文件夹,此结构必需遵循开发框架规则:
action :控制器类
mapper :Dao接口类及接口所对应的SQLMAP文件(需要注意的是:所有SQL必需大写,除参数)
model : 模型类(即:实体对象)
service: 业务接口
service.impl:业务接口的实现类
注意:如果是前后台分离,以远程接口方式开发,那么就是如下的结构,如图所示:
前端需要的结构
--------------------------------------------------------------------------------------------------
后端需要的结构
说明:国际化管理(注:此部份为系统预留功能,暂时没应用)
4./src/com/fcx/app/androic
/src/com/fcx/app/ios
说明:移动端开发业务在此目录下开发,因为由于业务的特殊性,web客户端所有请求是需要认证和授权的,而只有移动端是不需要认证授权的,并且所有移动端的请求必需是”.do”结束
例如:移动端请求user/login.do
Web端请求user/login.action
5./framework
说明:此目录下为框架核心配置文件及系统全局参数等文件;例如端口等数据配置
/framework/com/fcx/core/
说明:此目录下为框架所有通用类
备注:此目录下所有配置文件禁止开发人员更改,如果需要变更或追加改修通用类等文件请及(谭亮:管理员)开发人员联系
6./lib 开发框架核心业务相关JAR包
/lib/common
/lib/flex
/lib/mybatis
/lib/mysql
/lib/openCSV
/lib/oracle
/lib/security
/lib/spring
/lib/xml
说明:所有框架及业务相关JAR包,主要是进行了分类方便管理及维护
备注:以上目录结构禁止变更或删除,如果需要追加请联系管理员
7./WebRoot
/:相关业务文件上传目录
/flex:Flash管理平台及前台调用功能模块等页面相关文件(例如:自定义汇总、报表制度定义)/page:所有管理系统交互页面,注此文件夹下的所有子文件夹都是相关模块拼音简写创建,以及层次结构及菜单一置,不允许随意追加或创建
(注:所有相关开发并互页面必需在此目下创建,并且及功能模块结构一置)
/resources:所有相关资源文件(例如:JS,图片,样式等文件)并且都要有序的创建存储,不允许重复
/target:存储全局的入口文件及认证成功或失败等跳转文件,还有捕获系统全局性异常文件
/WEB-INF/config/
applicationContext-webapp.xml:Spring全局配置文件,不允许开发人员变更
jdbc.properties:数据库连接配置文件
log4j.properties:日志配置文件(注:此文件已配置完成,自动按日期创建相关日志文件)/web.xml :项目初始化配置文件
三.开发框架核心配置文件
1.applicationContext-jdbc.xml 数据连接池配置
2.applicationContext-mybatis.xml 新版MyBatis配置
value="classpath:mybatis-config.xml">
value="classpath*:com/longhope/business/*/mapper/*.xml" /> class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> rollback-for="https://www.docsj.com/doc/f519168855.html,ng.RuntimeException,https://www.docsj.com/doc/f519168855.html,ng.Exception"/> 3.applicationContext-springmvc-servlet.xml class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/"/> 四.开发规则及使用说明(实例说明:以数据编辑模块为例) 1.控制器:功能模块对应的业务入口 1.1 控制器名称:基本都以功能模块名称拼音简写或有代表性的英文+Action;例如:SjbjAction 1.2 控制器说明编写:当前控制器的主要功能及作者,创建日期版本等信息,如下: /** * Copyright(c)Consulting Longhope. All rights are reserved * * 数据编辑管理 Action * @author TanLiang * @version Ver 1.0 2015-08-02 初版 */ 1.3 控制器注解及名字空间定义:如下 @Controller//此注解标识为控制器 @RequestMapping("Sjbj") //此注解标识为当前控制器的名字空间,而且此名称空间标识 必需及菜单ID等数据一置,因为此部份是要及权限相关联的 1.4业务接口的注入:如下 @Autowired //必需追加此标签,这样业务接口就自动注入 private SjbjService sjbjService; 备注:而且所有注入的对象不需要在实现GET、SET等方法 1.5控制器的方法配置:如下 1.5.1 对于视图(JSP/PHP/其它前端)层的请求(备注:对于方法必需追加说明等标识) /** * 功能:数据保存 */ @RequestMapping("saveData")//标签为调用的方法 public String saveData(S_BS_CORP s_bs_corp,String JsonArray) { s_bs_corp = sjbjService.saveData(s_bs_corp,JsonArray); return /page/sjbj/xxx.jsp; //返回到指定视图层路径 } 1.5.2 对于视图(Flex或移动端或返回结果为JSON数据)层的请求 @RequestMapping("saveData") //标签为调用的方法 @ResponseBody //对于返回JSON类型数据必需追加此标签,然后返回相应的对象即可 因为所有对象或集合数据都会被框架自动转换为标准的JSON数据结构2.例如请求:Sjbj/saveData.action 3.实体类:业务相关实体对象,即:POJO类对象及数据表直接对应如下: @Table("S_BS_CORP") public class S_BS_CORP implements Serializable{ @PrimaryKey @Column(mappedName="S_CORP_UUID") private String S_CORP_UUID; @Column(mappedName="S_CORP_CD") private String S_CORP_CD; …… } 备注:以上实体类中对应的标签,主要应用自动拼组SQL时的业务逻辑而定义 4.Dao接口及SqlMap 4.1 文件名称规则同上,例如:数据编辑功能模块,需要注意义的是必需创建一对,其中一个是 Dao接口,而另一个是接口所对应的SQL方法,而且接口名称及方法名称还有参数及返回值等参数必需对应,如下: --------------------------------------------------------------------------------------------- SjbjMapper.java/ public List queryForList(HashMap map); --------------------------------------------------------------------------------------------- SjbjMapper.xml/ 5.业务接口及业务接口实现类如下: 4.1 接口文件必需放在service/目录下SjbjService.java 4.2 接口实现类文件必需放在service/impl/目录下SjbjServiceImpl.java 备注:业务层接口的名称必需按照此规则创建,否则可能导至无法正常自动创建事物处理, 还需要注意的是,在业务接口实现类中必需设置业务标签注解如下: @Service("sjbjService") //此标签必需设置,而名称则还是按模块名称简拼在+Service即可; 6.业务生成器: 即以上是配置控制器所产生的相关业务文件,那么这种机械性质的工作还是有些麻烦,所以我们开发了一套业务生成器,也就是说我们只要配置好相关业务的数据表名称,及生成目录然后运行即可自动生成了:实体类、Dao接口、Dao接口对应的SQLMAP、业务接口、业务接口实现类等文件,并且在SQLMAP及接口实现类中已经根据数据表的主外键逻辑自动生成基本业务; 业务生成了器类路径为: framework/com/fcx/core/generator/BusinessGenerator.java 配置好右键直接运行当前业务生成器类就可以了,所有业务相关文件全部生成了,无须手动去创建,此时只需要在控制器中配置业务接口,然后编辑方法传入相应参数就可以正常运行了,如果当前自动生成的基本业务无法满足,那么开发人员可自行编辑或在此基础上进行改修即可; 五.备注 开发约定如下: 说明:目录结构不允许变更,编写代码必需整洁并追加相应标识及说明,否则被视为垃圾代码,并找到编写人员要求重新整理; 1.1 数据库表定义规则:所有系统表都定义为:S_数据表