通用WEB项目DEMO说明文档 | 您所在的位置:网站首页 › web项目详细设计文档 › 通用WEB项目DEMO说明文档 |
通用WEB项目DEMO说明文档
通用WEB项目DEMO说明文档项目结构说明遵循原则:约定大于规范混淆说明后端代码开发文件结构约定Mybatis自动生成properties文件参数引入AOP处理日志打印异常处理
common包代码关于对外接口
前端代码开发文件结构约定通用文件建议
通用WEB项目DEMO说明文档
项目结构说明
src:java代码(包含配置文件)db:SQL脚本doc:文档相关produard:混淆相关代码WebContent:前端代码(包含jar包)build.properties:Ant项目构建配置文件build.xml:Ant项目构建运行文件README.md :项目说明文档
遵循原则:约定大于规范
混淆说明
是否混淆开关:build.properties文件 deploy.isObfuscate 属性(true:混淆,false:不混淆)关于混淆建议:
因为构建是开启混淆比较慢,所以建议平时开发不开启混淆,提升开发速度。注意:上测试之前一定要混淆跑一遍。混淆具体配置,参见:/proguard/***.pro文件
通常,Controller层,Jre包以及自己引用的第三方jar包不混淆;Mybatis自动生成代码、过滤器代码、配置文件代码不混淆; 不混淆依据:通常导致混淆报错原因是混淆后类名和方法名改变,不赘述。与Spring的创建Bean和注入有关; 后端代码开发 文件结构约定 包名约定 业务模块:com.公司名.项目名.模块名通用模块:com.公司名.项目名.common项目Java配置模块:com.公司名.项目名.config(包含AOP日志/异常处理等)Mybaits代码模块:com.公司名.项目名.mybatis配置文件:config说明: 这里没有按照“公司名.项目名”命名,按实际情况而定。 示例:![]() 建议:稍加一些代码即可实现自动化配置。 properties文件参数引入 Spring提供的引入方式为:@Value("${}")所有通常开发者会在用到的时候直接引入。缺点:一个配置可能引入多次,当配置文件修改需要修改多处,维护困难。建议封装为对象。实例参见:PropertiesConfig.java同时引用多个参数时可封装为方法返回对象或者Map。 AOP处理这里AOP处理主要两方面: 日志打印(这里仅仅做日志打印辅助,不能完全代替手动打印日志)异常处理 日志打印后端一般分为三层:Controller、Service、Dao 一般建议AOP拦截Controller层,打印入参出参。 指定方法或参数不打印在默写情况我们不想打印某些参数,但是又被AOP拦截了。这时建议提供不打印日志注解。参考代码:实例代码NonAopLog.java类及其相关实现。关于日志的一些建议:我觉得日志的作用是记录项目运行的状态,为了让运维人员更好的去了解正在运行的项目。但是这并不意味着日志越多越好,缺点不赘述。一般AOP日志基本上记录了一个业务处理的入参出参,简单的增删改基本上就没有必要再打印日志了,在业务逻辑稍微复杂一些,出现逻辑分支的时候,这里最好是打印日志。而我们在定义接口时接口的功能尽量单一,不要一个接口把所有的事都做完,难以维护。所以一般情况,逻辑不会太复杂,日志也不用打印太多。还有一点是,异常日志交给异常处理就行,如何理解,参见下一节。 异常处理Java里将Exception异常分为两种:受检异常和不受检异常。额,如何深入理解,看书去。在这里作为一个开发人员,我将异常分为以下几类: 系统异常 - SystemException(比如:系统参数错误,非正常业务逻辑错误等)业务异常 - BusinessException(比如:用户名不对,密码错误等)参数校验异常 - CheckException(比如:字段不能为空等)相关代码参见:config包代码这里只要是使用try catch处理不能使业务流程正常的异常一律往上一层抛,直到Controller层,到AOP拦截,统一处理,打印异常参数,栈信息,并返回前端对应的信息。 当我们碰到像IOException这种受检异常时,如果不能使业务正常话,封装为BusinessException跑向上一层。 common包代码 实例:common包代码一般建议开发人员不要改动,这里是经过验证的通用的且和业务无关的代码,新项目可以直接拷贝使用。 一般开发人员的通用代码,可以放入业务代码的common包中,如该代码经过评审,方可移入。 Common中常见的一些包: util包:以静态方法的形式被调用component:以Spring组件的形式被调用,这里有以下几种组件: http包:Http接口调用的组件message包:平安消息云发送短信组件AuditingFieldsHelper:审计字段插入更新组件 constant包:常量包Controller包:Controller层需要的类exception包:常用的异常定义business包:该包是common中唯一业务相关的代码,是各个业务模块公用的业务代码。 关于对外接口提供对外接口的时候需要一些验证,demo实例里是将验证过程封装,减少代码冗余,详细情况见代码即可。 |
CopyRight 2018-2019 实验室设备网 版权所有 |