当前位置:文档之家› SpringMvc搭建开发框架平台【基本使用说明】

SpringMvc搭建开发框架平台【基本使用说明】

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主要交互框架以EXT5.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.doWeb端请求user/login.action5./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/fileUpload:相关业务文件上传目录/flex:Flash管理平台及前台调用功能模块等页面相关文件(例如:自定义汇总、报表制度定义)/page:所有管理系统交互页面,注此文件夹下的所有子文件夹都是相关模块拼音简写创建,以及层次结构与菜单一置,不允许随意追加或创建(注:所有相关开发并互页面必需在此目下创建,并且与功能模块结构一置)/resources:所有相关资源文件(例如:JS,图片,样式等文件)并且都要有序的创建存储,不允许重复/target:存储全局的入口文件及认证成功或失败等跳转文件,还有捕获系统全局性异常文件/WEB-INF/config/applicationContext-webapp.xml:Spring全局配置文件,不允许开发人员变更jdbc.properties:数据库连接配置文件log4j.properties:日志配置文件(注:此文件已配置完成,自动按日期创建相关日志文件)/web.xml :项目初始化配置文件三.开发框架核心配置文件1.applicationContext-jdbc.xml 数据连接池配置<!-- 加载JDBC资源文件 --><context:property-placeholder location="/WEB-INF/config/jdbc.properties"/><!-- Mysql5.0 数据连接池配置–><bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="driverClassName"value="${jdbc.driverClassName}"/><property name="url"value="${jdbc.connectionURL}"/><property name="username"value="${ername}"/><property name="password"value="${jdbc.password}"/><!--<property name="autoCommitOnClose" value="${autoCommitOnClose}"/><property name="checkoutTimeout" value="${checkoutTimeout}"/><property name="initialPoolSize" value="${initialPoolSize}"/><property name="minPoolSize" value="${minPoolSize}"/><property name="maxPoolSize" value="${maxPoolSize}"/><property name="maxIdleTime" value="${maxIdleTime}"/><property name="acquireIncrement" value="${acquireIncrement}"/><property name="maxIdleTimeExcessConnections"value="${maxIdleTimeExcessConnections}"--></bean>2.applicationContext-mybatis.xml 新版MyBatis配置<!-- Spring提供的用于构建MyBatis的客户端sqlSessionFactory对象工厂 --><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource"ref="dataSource"/><property name="configLocation"value="classpath:mybatis-config.xml"></property><property name="mapperLocations"value="classpath*:com/longhope/business/*/mapper/*.xml" /></bean><!-- 配置sqlSessionTemplate模板类 --><bean id="sqlSessionTemplate"class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory"/></bean><!-- JdbcTemplate --><bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"ref="dataSource"/></bean><!-- JdbcDaoInterface --><bean id="jdbcDao"class="com.fcx.core.jdbc.DaoImple"><property name="dataSource"ref="dataSource"/></bean><!-- 配置事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"ref="dataSource"/></bean><!-- AOP切面技术,实现对Service的声明式事务管理 --><tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><tx:method name="set*"propagation="NOT_SUPPORTED"/><tx:method name="get*"propagation="REQUIRED"read-only="true"/><tx:method name="*"propagation="REQUIRED"rollback-for="ng.RuntimeException,ng.Exception"/></tx:attributes></tx:advice>3.applicationContext-springmvc-servlet.xml<!-- 启用基于注解(Annotation-based)的配置 --><context:annotation-config/><!—- 自动描述路径 --><context:component-scan base-package="com.longhope.business.*.action"/><context:component-scan base-package="com.longhope.business.*.service..*"/><!—Aop切面技术 --><aop:config><aop:pointcut id="serviceMethods"expression="execution(* com.fcx.*..service..*Service.*(..)) || execution(*com.longhope.business..service..*Service.*(..)) || execution(*com.longhope.business..*.service..*Service.*(..))"/><aop:advisor advice-ref="txAdvice"pointcut-ref="serviceMethods"/> </aop:config><!—视图解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/"/>四.开发规则及使用说明(实例说明:以数据编辑模块为例)1.控制器:功能模块对应的业务入口1.1 控制器名称:基本都以功能模块名称拼音简写或有代表性的英文+Action;例如:SjbjAction1.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.action3.实体类:业务相关实体对象,即: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接口及SqlMap4.1 文件名称规则同上,例如:数据编辑功能模块,需要注意义的是必需创建一对,其中一个是Dao接口,而另一个是接口所对应的SQL方法,而且接口名称与方法名称还有参数及返回值等参数必需对应,如下:--------------------------------------------------------------------------------------------- SjbjMapper.java/ public List queryForList(HashMap map);--------------------------------------------------------------------------------------------- SjbjMapper.xml/<select id="queryForList"parameterType="HashMap"resultType="HashMap"> SELECT * FROM 数据表 WHERE S_CORP_UUID = #{S_CORP_UUID}</select>5.业务接口及业务接口实现类如下:4.1 接口文件必需放在service/目录下SjbjService.java4.2 接口实现类文件必需放在service/impl/目录下SjbjServiceImpl.java备注:业务层接口的名称必需按照此规则创建,否则可能导至无法正常自动创建事物处理,还需要注意的是,在业务接口实现类中必需设置业务标签注解如下:@Service("sjbjService") //此标签必需设置,而名称则还是按模块名称简拼在+Service即可;6.业务生成器:即以上是配置控制器所产生的相关业务文件,那么这种机械性质的工作还是有些麻烦,所以我们开发了一套业务生成器,也就是说我们只要配置好相关业务的数据表名称,及生成目录然后运行即可自动生成了:实体类、Dao接口、Dao接口对应的SQLMAP、业务接口、业务接口实现类等文件,并且在SQLMAP及接口实现类中已经根据数据表的主外键逻辑自动生成基本业务;业务生成了器类路径为:framework/com/fcx/core/generator/BusinessGenerator.java配置好右键直接运行当前业务生成器类就可以了,所有业务相关文件全部生成了,无须手动去创建,此时只需要在控制器中配置业务接口,然后编辑方法传入相应参数就可以正常运行了,如果当前自动生成的基本业务无法满足,那么开发人员可自行编辑或在此基础上进行改修即可;五.备注开发约定如下:说明:目录结构不允许变更,编写代码必需整洁并追加相应标识及说明,否则被视为垃圾代码,并找到编写人员要求重新整理;1.1 数据库表定义规则:所有系统表都定义为:S_数据表所有业务表也就是制度表为:C_表号所有汇总表定义为:H_表号模版表定义为:T_表号备注:所有数据表字段名称全部为大写英文字母;1.2项目中的实体类对象定义规则同上例如:S_USER (即:系统用户表)1.3Java开发中的类名定义(主要以模块名称的简写拼音、或有效的英文单词) 如下:控制器:UserAction实体类:S_USER-系统用户表C_H201-固定资产投资H_G101-汇总表Dao映射接口及XML:UserMapper.javaUserMapper.xml业务接口:UserService.java业务接口实现类:UserServiceImpl.java方法名称开头字母小写:saveDetail();所有目录结构及配置文件禁止开发人员更改,如果需要变更或改修及通用类等文件请与(谭亮:管理员)开发人员联系,为了保证项目结构及代码类等文件的整洁性,方便他人维护请遵循开发规则,如有问题请及时联系开发人员:谭亮。

相关主题